AVG¶
NULL이 아닌 레코드의 평균을 반환합니다. 그룹 내의 모든 레코드가 NULL인 경우, 함수가 NULL을 반환합니다.
구문¶
집계 함수
AVG( [ DISTINCT ] <expr1> )
윈도우 함수
AVG( [ DISTINCT ] <expr1> ) OVER (
                                 [ PARTITION BY <expr2> ]
                                 [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
                                 )
자세한 window_frame 구문은 윈도우 함수 구문 및 사용법 섹션을 참조하십시오.
인자¶
- expr1
- 이는 숫자 데이터 타입(INTEGER, FLOAT, DECIMAL 등)으로 평가되는 식입니다. 
- expr2
- 분할하는 선택적 식입니다. 
- expr3
- 각 파티션 내에서 순서를 지정하는 선택적 식입니다. 
사용법 노트¶
- VARCHAR 식이 전달되면 이 함수는 암시적으로 입력을 부동 소수점 값으로 캐스팅합니다. 캐스팅을 수행할 수 없으면 오류가 반환됩니다. 
- 이 함수가 ORDER BY 절을 포함하는 OVER 절이 있는 윈도우 함수로 호출되는 경우: - 윈도우 프레임이 필수입니다. 윈도우 프레임이 명시적으로 지정되지 않으면 다음과 같은 암시적 윈도우 프레임이 사용됩니다. - RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW- 구문, 사용법 노트, 예를 포함하여 윈도우 프레임에 대한 자세한 내용은 윈도우 함수 구문 및 사용법 섹션을 참조하십시오. 
- 윈도우 함수에서 DISTINCT 키워드를 사용하는 것은 금지되며 컴파일 시간 오류가 발생합니다. 
 
예¶
설정합니다.
CREATE OR REPLACE TABLE avg_example(int_col int, d decimal(10,5), s1 varchar(10), s2 varchar(10)); INSERT INTO avg_example VALUES (1, 1.1, '1.1','one'), (1, 10, '10','ten'), (2, 2.4, '2.4','two'), (2, NULL, NULL, 'NULL'), (3, NULL, NULL, 'NULL'), (NULL, 9.9, '9.9','nine');
데이터를 표시합니다.
SELECT * FROM avg_example ORDER BY int_col, d; +---------+----------+------+------+ | INT_COL | D | S1 | S2 | |---------+----------+------+------| | 1 | 1.10000 | 1.1 | one | | 1 | 10.00000 | 10 | ten | | 2 | 2.40000 | 2.4 | two | | 2 | NULL | NULL | NULL | | 3 | NULL | NULL | NULL | | NULL | 9.90000 | 9.9 | nine | +---------+----------+------+------+
숫자이거나 숫자로 변환될 수 있는 열의 평균을 계산합니다.
SELECT AVG(int_col), AVG(d) FROM avg_example; +--------------+---------------+ | AVG(INT_COL) | AVG(D) | |--------------+---------------| | 1.800000 | 5.85000000000 | +--------------+---------------+
AVG 및 GROUP BY 를 결합하여 다양한 그룹의 평균을 계산합니다.
SELECT int_col, AVG(d), AVG(s1) FROM avg_example GROUP BY int_col ORDER BY int_col; +---------+---------------+---------+ | INT_COL | AVG(D) | AVG(S1) | |---------+---------------+---------| | 1 | 5.55000000000 | 5.55 | | 2 | 2.40000000000 | 2.4 | | 3 | NULL | NULL | | NULL | 9.90000000000 | 9.9 | +---------+---------------+---------+
간단한 윈도우 함수로서 사용합니다.
SELECT int_col, AVG(int_col) OVER(PARTITION BY int_col) FROM avg_example ORDER BY int_col; +---------+-----------------------------------------+ | INT_COL | AVG(INT_COL) OVER(PARTITION BY INT_COL) | |---------+-----------------------------------------| | 1 | 1.000 | | 1 | 1.000 | | 2 | 2.000 | | 2 | 2.000 | | 3 | 3.000 | | NULL | NULL | +---------+-----------------------------------------+