Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

AVG 함수

설명

AVG 함수는 모든 행에 대한 연산식 값의 산술 평균을 구한다. 하나의 연산식 expression만 인자로 지정되며, 연산식 앞에 DISTINCT 또는 UNIQUE 키워드를 포함시키면 연산식 값 중 중복을 제거한 후 평균을 구하고, 키워드가 생략되거나 ALL인 경우에는 모든 값에 대해서 평균을 구한다.

분석 함수에 대한 예제는 아래의 분석 함수 예제를 참고한다. 분석 함수에 대한 자세한 내용은 개요를 참고한다.

구문

AVG ( [ { DISTINCT | DISTINCTROW } | UNIQUE | ALL ] expression )

  • expression : 수치 값을 반환하는 임의의 연산식을 지정한다. 컬렉션 타입의 데이터를 반환하는 연산식은 지정될 수 없다.
  • ALL : 모든 값에 대해 평균을 구하기 위해 사용되며, 기본값이다.
  • DISTINCT 또는 UNIQUE : 중복이 제거된 유일한 값에 대해서만 평균을 구하기 위해 사용된다.
집계 함수 예제

다음은 demodb에서 한국이 획득한 금메달의 평균 수를 반환하는 예제이다.

SELECT AVG(gold)

FROM participant

WHERE nation_code = 'KOR'; 

                 avg(gold)

==========================

     9.600000000000000e+00

분석 함수 예제

다음은 역대 올림픽 대회 중 국가 코드와 연도 순대로 nation_code가 'AU'로 시작하는 국가가 획득한 금메달 수와 해당 국가의 역대 최소 금메달의 수를 같이 출력하는 예제이다.

SELECT host_year, nation_code, gold,

MIN(gold) OVER (PARTITION BY nation_code) mn_gold

FROM participant WHERE nation_code like 'AU%' ORDER BY nation_code, host_year;

 

    host_year  nation_code                  gold      mx_gold

=============================================================

         1988  'AUS'                           3           17

         1992  'AUS'                           7           17

         1996  'AUS'                           9           17

         2000  'AUS'                          16           17

         2004  'AUS'                          17           17

         1988  'AUT'                           1            2

         1992  'AUT'                           0            2

         1996  'AUT'                           0            2

         2000  'AUT'                           2            2

         2004  'AUT'                           2            2

다음은 위 예제에서 OVER 분석 절 이하의 "ORDER BY host_year" 절을 제거한 것으로, avg_gold의 값은 모든 연도의 금메달 평균으로 nation_code별로 각 연도에서 모두 같은 값을 가진다.

SELECT host_year, nation_code, gold, AVG(gold) OVER (PARTITION BY nation_code) avg_gold

FROM participant WHERE nation_code LIKE 'AU%';

 

    host_year  nation_code                  gold                  avg_gold

==========================================================================

         2004  'AUS'                          17     1.040000000000000e+01

         2000  'AUS'                          16     1.040000000000000e+01

         1996  'AUS'                           9     1.040000000000000e+01

         1992  'AUS'                           7     1.040000000000000e+01

         1988  'AUS'                           3     1.040000000000000e+01

         2004  'AUT'                           2     1.000000000000000e+00

         2000  'AUT'                           2     1.000000000000000e+00

         1996  'AUT'                           0     1.000000000000000e+00

         1992  'AUT'                           0     1.000000000000000e+00

         1988  'AUT'                           1     1.000000000000000e+00