카테고리:

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

MEDIAN

값 세트의 중앙값을 결정합니다.

구문

집계 함수

MEDIAN( <expr> )

윈도우 함수

MEDIAN( <expr> ) OVER ( [ PARTITION BY <expr2> ] )

인자

expr

식은 숫자 데이터 타입(INTEGER, FLOAT, DECIMAL 또는 이와 동등한 것)으로 평가되어야 합니다.

반환

입력에 따라 FLOAT 또는 DECIMAL (고정 소수점) 숫자를 반환합니다.

사용법 노트

  • NULL이 아닌 값의 수가 1보다 크거나 같은 홀수인 경우, NULL이 아닌 값의 중앙값(《중앙》) 값을 반환합니다.

  • NULL이 아닌 값의 수가 짝수인 경우, 중앙에 있는 두 값의 평균에 해당하는 값을 반환합니다. 예를 들어 값이 1, 3, 5, 20이면 4(3과 5의 평균)가 반환됩니다.

  • 모든 값이 NULL인 경우, NULL을 반환합니다.

  • NULL이 아닌 값의 개수가 0인 경우, NULL을 반환합니다.

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

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

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

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

      • 윈도우 프레임.

이는 함수를 사용하는 방법을 보여줍니다.

빈 테이블을 만듭니다.

CREATE OR REPLACE TABLE aggr(k int, v decimal(10,2));

v 열에 대한 MEDIAN 값을 가져옵니다. 행이 없기 때문에 함수는 NULL을 반환합니다.

SELECT MEDIAN (v) FROM aggr;
+------------+
| MEDIAN (V) |
|------------|
|       NULL |
+------------+

일부 행을 삽입합니다.

INSERT INTO aggr VALUES(1, 10), (1,20), (1, 21);
INSERT INTO aggr VALUES(2, 10), (2, 20), (2, 25), (2, 30);
INSERT INTO aggr VALUES(3, NULL);

각 그룹의 MEDIAN 값을 가져옵니다. k = 2 그룹의 값 개수는 짝수이므로 해당 그룹에 대해 반환되는 값은 중간에 있는 두 숫자 사이의 중간점입니다.

SELECT k, MEDIAN(v) FROM aggr GROUP BY k ORDER BY k;
+---+-----------+
| K | MEDIAN(V) |
|---+-----------|
| 1 |  20.00000 |
| 2 |  22.50000 |
| 3 |      NULL |
+---+-----------+
맨 위로 이동