기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
MEDIAN 창 함수
창 또는 파티션에서 값의 범위에 대한 중간 값을 계산합니다. 범위 내 NULL 값은 무시됩니다.
MEDIAN은 연속 분포 모델을 가정하는 역분포 함수입니다.
MEDIAN은 컴퓨팅 노드 전용 함수입니다. 쿼리가 사용자 정의 테이블 또는 시스템 테이블을 참조하지 않는 경우 함수는 오류를 반환합니다. AWS Clean Rooms
명령문
MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )
인수
- median_expression
-
중간을 결정할 값을 제공하는 표현식(열 이름 등)입니다. 이 표현식은 숫자 또는 날짜/시간 데이터 형식을 갖거나, 혹은 묵시적으로 1로 변환될 수 있어야 합니다.
- OVER
-
창 파티션을 지정하는 절입니다. OVER 절에는 창 순서 또는 창 프레임 명세가 포함될 수 없습니다.
- PARTITION BY partition_expression
-
선택 사항입니다. OVER 절에서 각 그룹의 레코드 범위를 설정하는 표현식입니다.
데이터 타입
반환 형식은 median_expression의 형식에 따라 결정됩니다. 다음 표는 각 median_expression 데이터 형식에 따른 반환 형식을 나타낸 것입니다.
입력 형식 | 반환 유형 |
---|---|
NUMERIC, DECIMAL | DECIMAL |
FLOAT, DOUBLE | DOUBLE |
날짜 | 날짜 |
사용 노트
median_expression 인수가 최대 정밀도가 38자리로 정의된 DECIMAL 데이터 형식인 경우에는 MEDIAN이 부정확한 결과 또는 오류를 반환합니다. MEDIAN 함수의 반환 값이 38자리를 초과하면 정밀도가 손실될 수도 있기 때문에 알맞은 자리 수로 결과가 잘립니다. 보간 도중 중간 결과가 최대 정밀도를 초과하면 수치 오버플로우가 발생하고 함수는 오류를 반환합니다. 이러한 상황을 방지하려면 정밀도가 낮은 데이터 형식을 사용하거나, 혹은 median_expression 인수를 낮은 정밀도로 변환합니다.
예를 들어 DECIMAL 인수가 포함된 SUM 함수는 38자리의 기본 정밀도를 반환합니다. 함수 결과의 비율은 인수 비율과 동일합니다. 따라서 예를 들어 DECIMAL(5,2) 열의 SUM은 DECIMAL(38,2) 데이터 형식을 반환합니다.
다음은 MEDIAN 함수의 median_expression 인수에 SUM 함수를 사용한 예입니다. PRICEPAID 열의 데이터 형식이 DECIMAL(8,2)이므로 SUM 함수는 DECIMAL(38,2)을 반환합니다.
select salesid, sum(pricepaid), median(sum(pricepaid)) over() from sales where salesid < 10 group by salesid;
잠재적 정밀도 손실이나 오버플로우 오류를 방지하려면 다음 예와 같이 함수 결과를 정밀도가 낮은 DECIMAL 데이터 형식으로 변환하는 것이 좋습니다.
select salesid, sum(pricepaid), median(sum(pricepaid)::decimal(30,2)) over() from sales where salesid < 10 group by salesid;
예
다음은 각 판매자의 중간 판매 수량을 계산하는 예입니다.
select sellerid, qty, median(qty) over (partition by sellerid) from winsales order by sellerid; sellerid qty median --------------------------- 1 10 10.0 1 10 10.0 1 30 10.0 2 20 20.0 2 20 20.0 3 10 17.5 3 15 17.5 3 20 17.5 3 30 17.5 4 10 25.0 4 40 25.0
요청 데이터에 대한 설명은 창 함수 예제를 위한 샘플 테이블 섹션을 참조하세요.