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 | 

SUM 함수

설명

SUM 함수는 모든 행에 대한 연산식 값들의 합계를 반환한다. 하나의 연산식 expression만 인자로 지정되며, 연산식 앞에 DISTINCT 또는 UNIQUE 키워드를 포함시키면 연산식 값 중 중복을 제거한 후 합계를 구하고, 키워드가 생략되거나 ALL인 경우에는 모든 값에 대해 합계를 구한다. 단일 값 수식을 SUM 함수의 입력으로 사용할 수 있다.

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

구문

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

  • expression : 수치를 반환하는 하나의 연산식을 지정한다.
  • ALL : 모든 값에 대해 합계를 구하기 위해 사용되며, 기본으로 지정된다.
  • DISTINCT 또는 UNIQUE : 중복이 제거된 유일한 값에 대해서만 합계를 구하기 위해 사용된다.
집계 함수 예제

다음은 demodb에서 역대 올림픽에서 획득한 금메달 수의 합계를 기준으로 10위권 국가와 금메달 총 수를 출력하는 예제이다.

SELECT nation_code, SUM(gold) FROM participant GROUP BY nation_code

ORDER BY SUM(gold) DESC

FOR ORDERBY_NUM() BETWEEN 1 AND 10 ;

 

=== <Result of SELECT Command in Line 1> ===

 

  nation_code             sum(gold)

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

  'USA'                         190

  'CHN'                          97

  'RUS'                          85

  'GER'                          79

  'URS'                          55

  'FRA'                          53

  'AUS'                          52

  'ITA'                          48

  'KOR'                          48

  'EUN'                          45

분석 함수 예제

다음은 demodb에서 nation_code가 'AU'로 시작하는 국가에 대해 연도별로 획득한 금메달 수와 해당 연도까지의 금메달 누적 합계를 출력하는 예제이다.

SELECT host_year, nation_code, gold,

SUM(gold) OVER (PARTITION BY nation_code ORDER BY host_year) sum_gold

FROM participant WHERE nation_code LIKE 'AU%';

 

    host_year  nation_code                  gold     sum_gold

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

         1988  'AUS'                           3            3

         1992  'AUS'                           7           10

         1996  'AUS'                           9           19

         2000  'AUS'                          16           35

         2004  'AUS'                          17           52

         1988  'AUT'                           1            1

         1992  'AUT'                           0            1

         1996  'AUT'                           0            1

         2000  'AUT'                           2            3

         2004  'AUT'                           2            5

다음은 위 예제에서 OVER 함수 이하의 "ORDER BY host_year" 절을 제거한 것으로, sum_gold의 값은 모든 연도의 금메달 합계로 각 연도에서 모두 같은 값을 가진다.

SELECT host_year, nation_code, gold, SUM(gold) OVER (PARTITION BY nation_code) sum_gold

FROM participant WHERE nation_code LIKE 'AU%';

    host_year  nation_code                  gold     sum_gold

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

         2004  'AUS'                          17           52

         2000  'AUS'                          16           52

         1996  'AUS'                           9           52

         1992  'AUS'                           7           52

         1988  'AUS'                           3           52

         2004  'AUT'                           2            5

         2000  'AUT'                           2            5

         1996  'AUT'                           0            5

         1992  'AUT'                           0            5

         1988  'AUT'                           1            5