カテゴリ:

集計関数 (一般)、 ウィンドウ関数

MEDIAN

値のセットの中央値を決定します。

構文

集計関数

MEDIAN( <expr> )

ウィンドウ関数

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

引数

式は数値データ型(INTEGERFLOATDECIMAL、または同等)に評価される必要があります。

戻り値

入力に応じて、 FLOAT または DECIMAL (固定小数点)番号を返します。

使用上の注意

  • 非NULL 値の数が1以上の奇数の場合、これは非NULL値の中央値(「中央」)を返します。

  • 非NULL 値の数が偶数の場合、2つの中央値の平均に等しい値が返されます。たとえば、値が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の値の数は偶数であるため、そのグループの戻り値は2つの中間の数値の中間点になります。

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