• ±×·ìÇÔ¼ö´Â ±×·ì´ç ÇϳªÀÇ °á°ú¸¦ Ãâ·ÂÇÏ´Â ÇÔ¼öÀÌ´Ù.
• ÀÌ·¯ÇÑ ±×·ìÇÔ¼ö´Â SELECT ÀýÀ̳ª HAVING Àý¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
• ¿©±â¼ HAVING ÀýÀº ±×·ìÀ» Á¦ÇÑÇϴµ¥ »ç¿ëµÇ´Â Ű¿öµåÀÌ´Ù.
• GROUP BY ÀýÀº ÇàÀ» ±×·ìÈÇÑ´Ù.
¡¼Çü½Ä¡½ SELECT Ä÷³¸í, ±×·ìÇÔ¼ö(Ä÷³¸í) FROM Å×À̺í¸í WHERE Á¶°Ç GROUP BY ±×·ìÇÎÇϰíÀÚÇÏ´Â Ä÷³¸í HAVING ±×·ìÁ¶°Ç ORDER BY Ä÷³¸í• GROUP BY ÀýÀº SELECT Àý¿¡¼ ±×·ìÇÔ¼ö¿Í °°ÀÌ ¾²ÀÎ ¸ðµç Ä÷³ÀÌ ±â¼úµÇ¾î¾ß ÇÑ´Ù.
±×·ìÇÔ¼ö´Â ´ÙÀ½°ú °°Àº °ÍÀÌ ÀÖ´Ù.
| ÇÔ¼ö¸í | ¼³¸í |
|---|---|
| AVG | NULL°ªÀ» Á¦¿ÜÇÑ ÇàÀÇ Æò±Õ°ªÀ» Ãâ·ÂÇÑ´Ù. |
| COUNT | ÇàÀÇ °¹¼ö¸¦ ¸®ÅÏÇÑ´Ù. |
| GROUPING | ÇØ´ç Ä÷³ÀÌ grouping¿¡ »ç¿ëµÇ¾ú´ÂÁöÀÇ ¿©ºÎ¸¦ 1 ¶Ç´Â 0À¸·Î Ãâ·ÂÇÑ´Ù. |
| GROUPING SETS | ÇÑ ¹øÀÇ Äõ¸®·Î ¿©·¯ °³ÀÇ groupingÀ» Á¦°øÇÑ´Ù. |
| MAX | ÃÖ´ë°ªÀ» Ãâ·ÂÇÑ´Ù. |
| MIN | ÃÖ¼Ò°ªÀ» Ãâ·ÂÇÑ´Ù. |
| STDDEV | NULL°ªÀ» Á¦¿ÜÇÑ Ç¥ÁØÆíÂ÷¸¦ Ãâ·ÂÇÑ´Ù. |
| SUM | NULL°ªÀ» Á¦¿ÜÇÑ Çհ踦 Ãâ·ÂÇÑ´Ù. |
| VARIANCE | NULL°ªÀ» Á¦¿ÜÇÑ ºÐ»êÀ» Ãâ·ÂÇÑ´Ù. |
• Å×À̺íÀÇ ÇàµéÀ» ¿øÇÏ´Â ±×·ìÀ¸·Î ³ª´ ¶§ »ç¿ëµÇ´Â Ű¿öµåÀÌ´Ù.
• ±×·ìÇÔ¼öÀÇ Ä÷³¸íÀ» SELECT Àý¿¡ »ç¿ëÇϰíÀÚ ÇÏ´Â °æ¿ì, GROUP BY ´ÙÀ½¿¡ Ä÷³¸íÀ» Ãß°¡ÇÑ´Ù.
• WHERE ÀýÀ» »ç¿ëÇÏ¿© ÇàµéÀ» ±×·ìÀ¸·Î ³ª´©±â Àü¿¡ ¹Ì¸® Á¶°Ç¿¡ ¸ÂÁö ¾Ê´Â ÇàµéÀ» Á¦¿Ü½Ãų ¼ö ÀÖ´Ù.
• GROUP BY Àý¿¡ Ä÷³ÀÇ À§Ä¡ ¶Ç´Â Ä÷³ º°ÄªÀ» ÁÙ ¼ö ¾ø´Ù.
• ±âº»ÀûÀ¸·Î ÇàµéÀº ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄµÇ¾î Ãâ·ÂµÈ´Ù. ORDER BYÀýÀ» »ç¿ëÇÏ¿© ¹Ù²Ù¾î ÁÙ ¼ö ÀÖ´Ù.
• ±×·ì ÇÔ¼ö°¡ ¾Æ´Ñ SELECT ÀýÀÇ ¾î¶² Ä÷³À̳ª Ç¥Çö½ÄÀº GROUP BY Àý¿¡ ¿Í¾ß ÇÑ´Ù.
• SELECT Àý¿¡¼ ³ª¿µÈ Ä÷³ À̸§À̳ª Ç¥Çö½ÄÀº GROUP BY Àý¿¡¼ ¹Ýµå½Ã ¸í½ÃÇØ¾ß ÇÑ´Ù. ±×·¯³ª GROUP BY Àý¿¡¼ ¸í½ÃÇÑ Ä÷³ À̸§Àº SELECT Àý¿¡¼ ¸í½ÃÇÏÁö ¾Ê¾Æµµ µÈ´Ù.
• GROUP BY ÀýÀ» ÀÌ¿ëÇÏ¿© º¸´Ù ÀûÀº ±×·ìÀ¸·Î ºÐ·ùÇÏ¿© ó¸®ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
• ROLLUPÀ̳ª CUBE ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© GROUPING(ÇÔ¼ö)ÇÑ °á°ú¿¡ ´ëÇÑ ÀÌÇØ¸¦ ½±°Ô ÇÑ´Ù.
• GROUPING SETS¿¡ ¿©·¯ °³ÀÇ ±×·ìÇÎ Á¶°ÇÀ» ±â¼úÇÏ¿© ¿øÇÏ´Â ±×·ìÇÎ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
¡¼Çü½Ä¡½ SELECT Ä÷³¸í, ±×·ìÇÔ¼ö(Ä÷³¸í), GROUPING(Ä÷³¸í) FROM Å×À̺í¸í WHERE Á¶°Ç GROUP BY [ROLLUP | CUBE]±×·ìÇÎÇϰíÀÚÇÏ´Â Ä÷³¸í,... [GROUPING SETS (Ä÷³¸í, Ä÷³¸í,...), ...] HAVING ±×·ìÁ¶°Ç ORDER BY Ä÷³¸í ¶Ç´Â À§Ä¡¹øÈ£
¡¼¿¹Á¦¡½
SQL> select deptno, avg(sal)
2 from emp
3 group by deptno;
DEPTNO AVG(SAL)
---------- ----------
10 2916.66667
20 2175
30 1400
SQL> select deptno, avg(sal),
2 decode(sign(avg(sal)-2170),1, 'good','poor')
3 from emp
4 group by deptno;
DEPTNO AVG(SAL) DECO
---------- ---------- ----
10 2916.66667 good
20 2175 good
30 1400 poor
SQL>
• GROUP BY Àý¿¡¼ Çϳª ÀÌ»óÀÇ Ä÷³À» »ç¿ëÇÏ¿© ±×·ìÀ» ³ª´©°í, ±×·ìº°·Î ´Ù½Ã ¼ºê ±×·ìÀ» ³ª´ ¼ö ÀÖ´Ù. ´ÙÀ½ÀÇ ¿¹´Â deptnoº°·Î ±×·ìÀ» ³ª´©°í, ´Ù½Ã jobº°·Î ¼ºê ±×·ìÀ» ³ª´« ¿¹ÀÌ´Ù.
SQL> select deptno,job,count(*),round(avg(sal))
2 from emp
3 group by deptno,job;
DEPTNO JOB COUNT(*) ROUND(AVG(SAL))
---------- --------- ---------- ---------------
10 CLERK 1 1300
10 MANAGER 1 2450
10 PRESIDENT 1 5000
20 CLERK 2 950
20 ANALYST 2 3000
20 MANAGER 1 2975
30 CLERK 1 950
30 MANAGER 1 2850
30 SALESMAN 4 1400
9 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.
SQL>
ROLLUP°ú CUBE´Â ±×·ìÇÎ Á¶ÇÕÀ» ¸¸µé¾î ³»´Â ¿¬»êÀÚÀÌ´Ù.
• ROLLUPÀº GROUP BY ÀýÀÇ ±×·ì Á¶°Ç¿¡ µû¶ó Àüü ÇàÀ» ±×·ìÈ Çϰí, °¢ ±×·ì¿¡ ´ëÇØ ºÎºÐÇÕÀ» ±¸ÇÏ´Â ¿¬»êÀÚÀÌ´Ù.
• CUBE´Â ROLLUP¿¡ ÀÇÇÑ ±×·ì °á°ú¿Í GROUP BY Àý¿¡ ±â¼úµÈ Á¶°Ç¿¡ µû¶ó ±×·ì Á¶ÇÕÀ» ¸¸µå´Â ¿¬»êÀÚÀÌ´Ù. Áï, ROLLUP ¿¬»êÀÚ¸¦ ¼öÇàÇÑ °á°ú¿¡ ´õÇØ GROUP BY Àý¿¡ ±â¼úµÈ Á¶°Ç¿¡ µû¶ó ¸ðµç °¡´ÉÇÑ ±×·ìÇÎ Á¶ÇÕ¿¡ ´ëÇÑ °á°ú¸¦ Ãâ·ÂÇÑ´Ù.
¡¼Çü½Ä¡½ SELECT Ä÷³¸í, ±×·ìÇÔ¼ö(Ä÷³¸í) FROM Å×À̺í¸í WHERE Á¶°Ç GROUP BY [ROLLUP | CUBE]±×·ìÇÎÇϰíÀÚÇÏ´Â Ä÷³¸í,... HAVING ±×·ìÁ¶°Ç ORDER BY Ä÷³¸í ¶Ç´Â À§Ä¡¹øÈ£• ROLLUP°ú CUBE´Â GROUP BY Àý µÚ¿¡ ±â¼úÇÑ Ä÷³ °³¼ö¿¡ µû¶ó Ãâ·ÂµÇ´Â °á°ú ¼ÂÀÌ ´Þ¶óÁø´Ù.
| ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ROLLUP ¦¬¦¬¦¬¦¬¦¬¦¬¦¬> | ||||||
|---|---|---|---|---|---|---|
| deptno | clerk | salesman | manager | analyst | president | °è |
| 10 | 1 | 1 | 1 | 3 | ||
| 20 | 2 | 1 | 2 | 5 | ||
| 30 | 1 | 4 | 1 | 6 | ||
| ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ CUBE ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ | |||||||
|---|---|---|---|---|---|---|---|
| deptno | clerk | salesman | manager | analyst | president | °è | ¦ ¦ ¦ ¦ ¦ ¦ ∨ |
| 10 | 1 | 1 | 1 | 3 | |||
| 20 | 2 | 1 | 2 | 5 | |||
| 30 | 1 | 4 | 1 | 6 | |||
| °è | 4 | 4 | 3 | 2 | 1 | 14 | |
¡¼¿¹Á¦¡½
| deptnoº° ¸ðÀ½ | jobº° ¸ðÀ½ | ºÎºÐÇÕ°è |
|---|---|---|
SQL> select deptno,job,sal from emp
2 order by deptno;
DEPTNO JOB SAL
---------- --------- ----------
10 MANAGER 2450
10 PRESIDENT 5000
10 CLERK 1300
20 CLERK 800
20 CLERK 1100
20 ANALYST 3000
20 ANALYST 3000
20 MANAGER 2975
30 SALESMAN 1600
30 MANAGER 2850
30 SALESMAN 1250
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250
14 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.
SQL>
|
| ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ ROLLUP ¦¬¦¬¦¬¦¬¦¬¦¬¦¬> | ||||||
|---|---|---|---|---|---|---|
| deptno | clerk | salesman | manager | analyst | president | °è |
| 10 | 1 | 1 | 1 | 3 | ||
| ÇÕ | ÇÕ | ÇÕ | ÇÕ | ÇÕ | ||
| 20 | 2 | 1 | 2 | 5 | ||
| ÇÕ | ÇÕ | ÇÕ | ÇÕ | ÇÕ | ||
| 30 | 1 | 4 | 1 | 6 | ||
| ÇÕ | ÇÕ | ÇÕ | ÇÕ | ÇÕ | ||
| ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ CUBE ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¯ | |||||||
|---|---|---|---|---|---|---|---|
| deptno | clerk | salesman | manager | analyst | president | °è | ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ∨ |
| 10 | 1 | 1 | 1 | 3 | |||
| ÇÕ | ÇÕ | ÇÕ | ÇÕ | ÇÕ | |||
| 20 | 2 | 1 | 2 | 5 | |||
| ÇÕ | ÇÕ | ÇÕ | ÇÕ | ÇÕ | |||
| 30 | 1 | 4 | 1 | 6 | |||
| ÇÕ | ÇÕ | ÇÕ | ÇÕ | ÇÕ | |||
| °è | 4 | 4 | 3 | 2 | 1 | 14 | |
¡¼¿¹Á¦¡½
| ROLLUP »ç¿ë | CUBE »ç¿ë |
|---|---|
SQL> select deptno,job,sum(sal)
2 from emp
3 group by rollup(deptno,job);
DEPTNO JOB SUM(SAL)
---------- --------- ----------
10 CLERK 1300 ¢Ð 10 ±×·ì clerkÀÇ ÇÕ°è
10 MANAGER 2450 ¢Ð 10 ±×·ì managerÀÇ ÇÕ°è
10 PRESIDENT 5000 ¢Ð 10 ±×·ì presidentÀÇ ÇÕ°è
10 8750 ¢Ð 10 ±×·ìÀÇ ºÎºÐÇÕ°è
20 CLERK 1900 ¢Ð 20 ±×·ì clerkÀÇ ÇÕ°è
20 ANALYST 6000 ¢Ð 20 ±×·ì analystÀÇ ÇÕ°è
20 MANAGER 2975 ¢Ð 20 ±×·ì managerÀÇ ÇÕ°è
20 10875 ¢Ð 20 ±×·ìÀÇ ºÎºÐÇÕ°è
30 CLERK 950 ¢Ð 30 ±×·ì clerkÀÇ ÇÕ°è
30 MANAGER 2850 ¢Ð 30 ±×·ì managerÀÇ ÇÕ°è
30 SALESMAN 5600 ¢Ð 30 ±×·ì salesmanÀÇ ÇÕ°è
30 9400 ¢Ð 30 ±×·ìÀÇ ºÎºÐÇÕ°è
29025 ¢Ð ÃÑÇÕ°è
13 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.
SQL>
|
GROUPING ÇÔ¼ö´Â ROLLUPÀ̳ª CUBE ¿¬»êÀÚ¿Í ÇÔ²² »ç¿ëÇÏ¿© GROUPING ÇÔ¼ö¿¡ ±â¼úµÈ Ä÷³ÀÌ ±×·ìÇÎ ½Ã Áï, ROLLUPÀ̳ª CUBE ¿¬»ê½Ã »ç¿ëÀÌ µÇ¾ú´ÂÁö¸¦ º¸¿© ÁÖ´Â ÇÔ¼öÀÌ´Ù.
Ưº°È÷ ¿¬»ê ±â´ÉÀº ¾øÀ¸¸ç ROLLUPÀ̳ª CUBE ¿¬»ê ÈÄ Ãâ·ÂµÈ °á°ú¿¡ ´ëÇÑ »ç¿ëÀÚÀÇ ÀÌÇØ¸¦ ³ôÀ̱â À§ÇØ »ç¿ëµÈ´Ù.
Áï, GROUPING ÇÔ¼ö¸¦ ÀÌ¿ëÇÒ °æ¿ì Ãâ·ÂµÇ´Â °á°ú°ª Áß NULL°ªÀÌ ÀÖ´Ù¸é ÀÌ NULL°ªÀÌ ROLLUPÀ̳ª CUBE ¿¬»êÀÇ °á°ú·Î »ý¼ºµÈ °ÍÀÎÁö, ¿ø·¡ Å×À̺í»ó¿¡ NULL°ªÀ¸·Î ÀúÀåµÈ °ÍÀÎÁö¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
¡¼Çü½Ä¡½ SELECT Ä÷³¸í, ±×·ìÇÔ¼ö(Ä÷³¸í),GROUPING(Ä÷³¸í) FROM Å×À̺í¸í WHERE Á¶°Ç GROUP BY [ROLLUP | CUBE]±×·ìÇÎÇϰíÀÚÇÏ´Â Ä÷³¸í,... HAVING ±×·ìÁ¶°Ç ORDER BY Ä÷³¸í ¶Ç´Â À§Ä¡¹øÈ£• grouping ÇÔ¼ö´Â Àμö ·Î ÇϳªÀÇ °ª¸¸À» °¡Áú ¼ö ÀÖ´Ù.
¡¼¿¹Á¦¡½
| ROLLUP »ç¿ë | CUBE »ç¿ë |
|---|---|
SQL> select deptno,sum(sal),grouping(deptno)
2 from emp
3 group by rollup(deptno);
DEPTNO SUM(SAL) GROUPING(DEPTNO)
---------- ---------- ----------------
10 8750 0
20 10875 0
30 5600 0
25225 1
SQL>
|
SQL> select deptno,sum(sal),grouping(deptno)
2 from emp
3 group by cube(deptno);
DEPTNO SUM(SAL) GROUPING(DEPTNO)
---------- ---------- ----------------
25225 1
10 8750 0
20 10875 0
30 5600 0
SQL> |
¡¼¿¹Á¦¡½
| ROLLUP »ç¿ë | CUBE »ç¿ë |
|---|---|
SQL> select deptno,job,count(*),
2 grouping(deptno) grp_dno,
3 grouping(job) grp_job
4 from emp
5 group by rollup(deptno,job);
DEPTNO JOB COUNT(*) GRP_DNO GRP_JOB
---------- --------- ---------- ---------- ----------
10 CLERK 1 0 0
10 MANAGER 1 0 0
10 PRESIDENT 1 0 0
10 3 0 1
20 CLERK 2 0 0
20 ANALYST 2 0 0
20 MANAGER 1 0 0
20 5 0 1
30 CLERK 1 0 0
30 MANAGER 1 0 0
30 SALESMAN 4 0 0
30 6 0 1
14 1 1
13 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.
SQL>
|
grouping sets ÇÔ¼ö´Â GROUP BY Àý¿¡¼ ±×·ì Á¶°ÇÀ» ¿©·¯ °³ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ÇÔ¼öÀÌ´Ù. GROUPING SETS ÇÔ¼öÀÇ °á°ú´Â °¢ ±×·ì Á¶°Ç¿¡ ´ëÇØ º°µµ·Î GROUP BYÇÑ °á°ú¸¦ UNION ALLÇÑ °á°ú¿Í µ¿ÀÏÇÏ´Ù. GROUPING SETS ÇÔ¼ö´Â ÇϳªÀÇ SQL¹®¿¡ ÀÇÇØ ¿©·¯ °³ÀÇ ±×·ì Á¶°ÇÀ» ÇѲ¨¹ø¿¡ ÁöÁ¤ÇÏ¿© º¹ÀâÇÑ ±×·ì ó¸® °úÁ¤À» ´Ü¼øÇÏ°Ô ±¸¼ºÇÒ ¼ö ÀÖ´Ù.
¡¼Çü½Ä¡½ SELECT Ä÷³¸í, ±×·ìÇÔ¼ö(Ä÷³¸í),GROUPING(Ä÷³¸í) FROM Å×À̺í¸í WHERE Á¶°Ç GROUP BY [ROLLUP | CUBE]±×·ìÇÎÇϰíÀÚÇÏ´Â Ä÷³¸í,... [GROUPING SETS (Ä÷³¸í, Ä÷³¸í,...), ...] HAVING ±×·ìÁ¶°Ç ORDER BY Ä÷³¸í ¶Ç´Â À§Ä¡¹øÈ£• grouping sets ÇÔ¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â Àμö´Â ¿©·¯ °³°¡ ¿Ã ¼ö ÀÖ´Ù.
¡¼¿¹Á¦¡½
| grouping sets¸¦ »ç¿ëÇÑ °æ¿ì | UNION ALLÀ» »ç¿ëÇÑ °æ¿ì |
|---|---|
SQL> select deptno,job,mgr,sum(sal)
2 from emp
3 group by GROUPING SETS((deptno,job),(deptno,mgr));
DEPTNO JOB MGR SUM(SAL)
---------- --------- ---------- ----------
10 5000
10 7782 1300
10 7839 2450
20 7566 6000
20 7788 1100
20 7839 2975
20 7902 800
30 7698 5600
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
DEPTNO JOB MGR SUM(SAL)
---------- --------- ---------- ----------
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2975
30 SALEMAN 5600
15 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.
SQL>
|
SQL> select deptno,job,null as mgr,sum(sal)
2 from emp
3 group by deptno,job
4 UNION ALL
5 select deptno,null as JOB,mgr,sum(sal)
6 from emp
7 group by deptno,mgr;
DEPTNO JOB MGR SUM(SAL)
---------- --------- ---------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2975
30 SALEMAN 5600
10 5000
10 7782 1300
10 7839 2450
20 7566 6000
DEPTNO JOB MGR SUM(SAL)
---------- --------- ---------- ----------
20 7788 1100
20 7839 2975
20 7902 800
30 7698 5600
15 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.
SQL> |
¡¼¿¹Á¦¡½ SQL> select deptno,job,count(*) 2 from emp 3 group by grouping sets((deptno,job),deptno,job); DEPTNO JOB COUNT(*) ---------- --------- ---------- 10 CLERK 1 20 CLERK 2 30 CLERK 1 20 ANALYST 2 10 MANAGER 1 20 MANAGER 1 30 MANAGER 1 30 SALESMAN 4 10 PRESIDENT 1 CLERK 4 ANALYST 2 MANAGER 3 SALESMAN 4 PRESIDENT 1 10 3 20 5 30 6 17 °³ÀÇ ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù. SQL>
HAVING ÀýÀº SELECT ¹®¿¡¼ Á¶°Ç °Ë»öÀ» À§ÇØ »ç¿ëµÇ´Â WHERE ÀýÀÇ ±â´É°ú ºñ½ÁÇÏ´Ù. WHERE ÀýÀº FROM Àý¿¡¼ ÁöÁ¤µÈ Å×À̺íÀ» ´ë»óÀ¸·Î Á¶°ÇÀ» Àû¿ëÇϴµ¥ ºñÇÏ¿©, HAVING ÀýÀº GROUP BY Àý¿¡ ÀÇÇØ »ý¼ºµÈ ±×·ìÀ» ´ë»óÀ¸·Î Á¶°ÇÀ» Àû¿ëÇÑ´Ù.
HAVING ÀýÀÇ ½ÇÇà °úÁ¤
1) Å×ÀÌºí¿¡¼ WHERE Àý¿¡ ÀÇÇØ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â Çà ÁýÇÕÀ» ¼±ÅÃÇÑ´Ù.
2) Çà ÁýÇÕÀ» GROUP BY Àý¿¡ ÀÇÇØ ±×·ìÇÎÇÑ´Ù.
3) HAVING Àý¿¡ ÀÇÇØ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ±×·ìÀ» ¼±ÅÃÇÑ´Ù.
• ±×·ìÀ» Á¦ÇÑÇÑ´Ù.
• WHERE Àý¿¡ ±×·ì Á¦ÇÑ¿¡ ´ëÇÑ Á¶°ÇÀ» ÁÖ¸é error°¡ ¹ß»ýÇÑ´Ù.
¡¼¿¹Á¦¡½
SQL> select deptno, count(*), sum(sal)
2 from emp
3 group by deptno
4 having count(*) > 2;
DEPTNO COUNT(*) SUM(SAL)
---------- ---------- ----------
10 3 8750
20 5 10875
30 4 5600
SQL>
• HAVING Àý ´ÙÀ½¿¡ GROUP ÇÔ¼ö³ª GROUP BY ÇÑ °Í¸¸ ¿Ã ¼ö ÀÖ´Ù.| having Àý ¾ø´Â °æ¿ì | having Àý ÀÖ´Â °æ¿ì | ||
|---|---|---|---|
SQL> select job,count(*), round(avg(sal)) avg_sal, 2 round(avg(comm)) avg_comm 3 from emp 4 group by job 5 order by avg_sal DESC; JOB COUNT(*) AVG_SAL AVG_COMM --------- ---------- ---------- ---------- PRESIDENT 1 5000 ANALYST 2 3000 MANAGER 3 2758 SALESMAN 4 1400 550 CLERK 4 1038 SQL> |