PERCENTILE_CONT
PERCENTILE_CONT
PERCENTILE_CONT 함수는 입력 열(column)의 연속 분포(continuous distribution, order_by_expr로 지정)를 기반으로 백분위수(percentile) 값을 반환해요. 원하는 백분위수에 정확히 놓인 입력 행이 없으면, 가장 가까운 두 입력 값의 선형 보간(linear interpolation)으로 결과를 계산해요. NULL 값은 계산에서 무시돼요.
출처: 문서
본문
문법 (Syntax)
집계 함수 (Aggregate function)
PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>)
윈도우 함수 (Window function)
PERCENTILE_CONT( <percentile> )
WITHIN GROUP (ORDER BY <order_by_expr>)
OVER ( [ PARTITION BY <expr3> ] )
인자 (Arguments)
- percentile — 찾으려는 값의 백분위수예요. 백분위수는 0.0과 1.0 사이의 상수여야 해요. 예를 들어 90번째 백분위수의 값을 찾으려면 0.9를 지정하세요.
- order_by_expr — 값을 정렬할 기준이 되는 표현식(주로 열 이름)이에요. 예를 들어 수학 SAT 점수가 90번째 백분위수에 해당하는 학생을 찾으려면 수학 SAT 점수를 담은 열을 지정하세요. 이 표현식은 반환 값을 뽑아내는 열이기도 하다는 점에 유의하세요. 예를 들어 수학 SAT 점수로 정렬하면 결과도 수학 SAT 점수 중 하나예요. 한 열로 정렬하면서 다른 열의 백분위수 값을 얻을 수는 없어요.
- expr3 — 행을 파티션으로 그룹화하는 데 사용되는 선택적 표현식이에요.
반환 (Returns)
지정한 백분위수에 해당하는 값을 반환해요. 원하는 백분위수에 정확히 놓인 입력 행이 없으면 가장 가까운 두 입력 값의 선형 보간으로 결과를 계산해요.
참고: 그룹에 값이 하나뿐이면, 지정한 백분위수와 무관하게 그 값이 반환돼요 (예: 백분위수 0.0과 1.0 모두 그 하나의 행을 반환해요).
사용 메모 (Usage notes)
- 함수의 백분위수 인자는 상수여야 해요.
- 이 함수는 DISTINCT를 지원하지 않아요.
- PERCENTILE_CONT 함수는 가장 가까운 두 값 사이를 보간하지만, PERCENTILE_DISC 함수는 보간하지 않고 가장 가까운 값을 선택해요.
- 이 함수를 윈도우 함수로 호출할 때는 다음을 지원하지 않아요: OVER 절 안의 ORDER BY 절, 명시적 윈도우 프레임.
예제 (Examples)
다음 예제는 여러 그룹에서 25번째 백분위수(0.25)의 값을 보여줘요:
값으로 테이블을 만들고 채워요:
CREATE OR REPLACE TABLE aggr (k INT, v DECIMAL(10,2));
INSERT INTO aggr (k, v) VALUES
(0, 0),
(0, 10),
(0, 20),
(0, 30),
(0, 40),
(1, 10),
(1, 20),
(2, 10),
(2, 20),
(2, 25),
(2, 30),
(3, 60),
(4, NULL);
쿼리를 실행하고 출력을 보여줘요 (일부 값은 정확하고 일부는 보간된 값이에요):
SELECT k, PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY v)
FROM aggr
GROUP BY k
ORDER BY k;
+---+-------------------------------------------------+
| K | PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY V) |
|---+-------------------------------------------------|
| 0 | 10.00000 |
| 1 | 12.50000 |
| 2 | 17.50000 |
| 3 | 60.00000 |
| 4 | NULL |
+---+-------------------------------------------------+