AVG 창 함수는 입력 표현식 값의 평균(산술 평균)을 반환합니다. AVG 함수는 숫자 값을 사용하고 NULL 값을 무시합니다.
구문
AVG ( [ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
인수
- 표현식
-
함수가 실행되는 대상 열 또는 표현식입니다.
- ALL
-
인수가 ALL일 때는 함수가 표현식의 모든 중복 값을 그대로 유지한 채 행의 수를 계산합니다. ALL이 기본값입니다. DISTINCT는 지원되지 않습니다.
- OVER
-
집계 함수의 창 절을 지정합니다. OVER 절은 창 집계 함수와 일반적인 집합 집계 함수를 구분하는 역할을 합니다.
- PARTITION BY expr_list
-
하나 이상의 표현식과 관련하여 AVG 함수의 창을 정의합니다.
- ORDER BY order_list
-
각 파티션의 행을 정렬합니다. PARTITION BY를 지정하지 않으면 ORDER BY가 전체 테이블을 사용합니다.
- frame_clause
-
집계 함수에서 ORDER BY 절이 사용되면 명시적인 프레임 절이 필요합니다. 프레임 절은 순서가 지정된 결과 내에 행 집합을 추가하거나 제거함으로써 함수의 창에 포함되는 행 집합을 정제하는 역할을 하며, ROWS 키워드와 관련 지정자로 구성됩니다. 창 함수 구문 요약 섹션을 참조하세요.
데이터 타입
AVG 함수에서 지원되는 인수 형식은 SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL, DOUBLE PRECISION입니다.
AVG 함수에서 지원되는 반환 형식은 다음과 같습니다.
-
SMALLINT 또는 INTEGER 인수일 때 BIGINT
-
BIGINT 인수일 때 NUMERIC
-
부동 소수점 인수일 때 DOUBLE PRECISION
예시
다음 예에서는 날짜를 기준으로 판매된 수량의 이동 평균을 계산한 후 날짜 ID와 판매 ID에 따라 결과 순서를 지정합니다.
select salesid, dateid, sellerid, qty,
avg(qty) over
(order by dateid, salesid rows unbounded preceding) as avg
from winsales
order by 2,1;
salesid | dateid | sellerid | qty | avg
---------+------------+----------+-----+-----
30001 | 2003-08-02 | 3 | 10 | 10
10001 | 2003-12-24 | 1 | 10 | 10
10005 | 2003-12-24 | 1 | 30 | 16
40001 | 2004-01-09 | 4 | 40 | 22
10006 | 2004-01-18 | 1 | 10 | 20
20001 | 2004-02-12 | 2 | 20 | 20
40005 | 2004-02-12 | 4 | 10 | 18
20002 | 2004-02-16 | 2 | 20 | 18
30003 | 2004-04-18 | 3 | 15 | 18
30004 | 2004-04-18 | 3 | 20 | 18
30007 | 2004-09-07 | 3 | 30 | 19
(11 rows)
요청 데이터에 대한 설명은 창 함수 예제를 위한 샘플 테이블 섹션을 참조하세요.