카테고리:

집계 함수 (일반) , 윈도우 함수

PERCENTILE_CONT

입력 열의 연속 분포를 기반으로 백분위수 값을 반환합니다(order_by_expr 에 지정됨). 원하는 백분위수에 정확히 맞는 입력 행이 없는 경우, 결과는 가장 가까운 두 입력 값의 선형 보간을 사용하여 계산됩니다. NULL 값은 계산에서 무시됩니다.

참고 항목:

PERCENTILE_DISC

구문

집계 함수

PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>)
Copy

윈도우 함수

PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>) OVER ( [ PARTITION BY <expr3> ] )
Copy

인자

percentile

찾고자 하는 값의 백분위수입니다. 백분위수는 0.0에서 1.0 사이의 상수여야 합니다. 예를 들어, 90번째 백분위수에서 값을 찾으려면 0.9를 지정합니다.

order_by_expr

값을 정렬하는 데 사용할 식(일반적으로 열 이름)입니다. 예를 들어, 수학 SAT 점수가 90번째 백분위수인 학생을 찾으려는 경우, 수학 SAT 점수가 포함된 열을 지정합니다.

암시적으로 이는 반환된 값이 선택되는 열이기도 합니다. 예를 들어, 수학 SAT 점수를 기준으로 정렬하는 경우 결과는 수학 SAT 점수 중 하나입니다. 한 열을 기준으로 정렬한 후, 다른 열에 대한 백분위수 값을 얻을 수는 없습니다.

expr3

행을 파티션으로 그룹화하는 데 사용되는 선택적 식입니다.

반환

지정된 백분위수에 있는 값을 반환합니다. 원하는 백분위수에 정확히 맞는 입력 행이 없는 경우, 결과는 가장 가까운 두 입력 값의 선형 보간을 사용하여 계산됩니다.

참고

그룹에 값이 하나만 포함된 경우, 지정된 모든 백분위수에 대해 해당 값이 반환됩니다(예: 백분위수 0.0과 백분위수 1.0 모두 해당 행 하나를 반환함).

사용법 노트

  • 함수에 대한 percentile 인자는 상수여야 합니다.

  • 이 함수에는 DISTINCT가 지원되지 않습니다.

  • PERCENTILE_CONT 함수는 가장 가까운 두 값 사이를 보간하는 반면, PERCENTILE_DISC 함수는 보간하는 대신 가장 가까운 값을 선택합니다.

  • 윈도우 함수로 사용되는 경우:

    • 이 함수는 다음을 지원하지 않습니다.

      • OVER() 절의 ORDER BY 하위 절.

      • 윈도우 프레임.

다음 예는 다양한 그룹 내에서 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);
Copy

쿼리를 실행하고 출력을 표시합니다(일부 값은 정확하고 일부는 보간됨).

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 |
+---+-------------------------------------------------+
Copy