카테고리:

집계 함수 (General) , 윈도우 함수

MEDIAN

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

구문

집계 함수

MEDIAN( <expr> )

윈도우 함수

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

인자

expr

The expression must evaluate to a numeric data type (INTEGER, FLOAT, DECIMAL, or equivalent).

반환

Returns a FLOAT or DECIMAL (fixed-point) number, depending upon the input.

사용법 노트

  • 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));

Get the MEDIAN value for column v. The function returns NULL because there are no rows.

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);

Get the MEDIAN value for each group. Note that because the number of values in group k = 2 is an even number, the returned value for that group is the mid-point between the two middle numbers.

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