ÀÌ ÇÔ¼ö´Â ÁöÁ¤µÈ Ä÷³¿¡ ´ëÇÑ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â Çà Áß¿¡¼ NULLÀ» Á¦¿ÜÇÑ Æò±ÕÀ» ±¸Çϴµ¥ ¾²ÀδÙ.
ÀÌ ÇÔ¼ö´Â numeric µ¥ÀÌÅÍŸÀÔÀ̳ª ¶Ç´Â ¹¬½ÃÀûÀ¸·Î nonnumeric µ¥ÀÌÅÍ Å¸ÀÔÀÌ numeric µ¥ÀÌÅÍÀÔÀ¸·Î ÀüȯµÇ´Â °æ¿ì¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
returnµÇ´Â µ¥ÀÌÅÍŸÀÔÀº ¾Æ±Ô¸ÕÆ®ÀÇ numeric µ¥ÀÌÅÍŸÀÔ°ú µ¿ÀÏÇÑ numeric µ¥ÀÌÅÍŸÀÔÀ» ¹ÝȯÇÑ´Ù.
Ű¿öµå DISTINCT¸¦ ÁöÁ¤Çϸé, analyticÀý¿¡¼ query_partition¿¡¸¸ »ç¿ëÇϸç, order_by ÀýÀ̳ª windowing Àý¿¡¼´Â »ç¿ëÇÒ ¼ö ¾ø´Ù.
aggregate ÇÔ¼ö³ª
analytic ÇÔ¼ö·Î »ç¿ëµÈ´Ù.
¡¼Çü½Ä¡½
AVG( [DISTINCT ¦ ALL] Ä÷³¸í)
[ [OVER] (analytic Àý)]
¡¼¿¹Á¦¡½¢Ð aggregate ¿¹
SQL> select * from emp;
ID NAME SALARY BONUS
---------- ---------- ---------- ----------
1101 Cho 250 125
1102 Joe 240 100
1103 kim 250 100
1104 jijoe 220 100
SQL> select avg(salary) from emp;
AVG(SALARY)
-----------
240
SQL>
¡¼¿¹Á¦¡½¢Ð analytic ¿¹
SQL> select avg(distinct salary) over(partition by bonus)
2 from emp;
AVG(DISTINCTSALARY)OVER(PARTITIONBYBONUS)
-----------------------------------------
236.666667
236.666667
236.666667
250
SQL> select avg(salary) over(partition by bonus order by id
2 rows between 1 preceding and 1 following) as avg from emp;
AVG
----------
245
236.666667
235
250
SQL>
SQL> select avg(comm)from emp;
AVG(COMM)
----------
550 ¢Ð º¸³Ê½º¸¦ ¹Þ´Â »ç¶÷µé¸¸ÀÇ Æò±Õ
SQL> select AVG(NVL(comm,0)) from emp;
AVG(NVL(COMM,0))
----------------
183.333333 ¢Ð »ç¿ø Àüü¿¡ ´ëÇÑ º¸³Ê½ºÀÇ Æò±Õ
SQL>
ÀÌ ¿¹¿¡¼ º¸³Ê½º¸¦ ¹ÞÁö ¾Ê´Â »ç¶÷Àº Á¦¿ÜµÇ´Â ¿ì¸¦ °³¼±Çϱâ À§Çؼ NVL ÇÔ¼ö·ê »ç¿ëÇØ¾ß
ÀüüÀÇ Æò±Õ º¸³Ê½º°¡ °è»êµÈ´Ù.