説明
この関数は、一連の数値の中央値を返します。つまり、数値を並べ替えた後、真ん中に位置する数値を返します。パラメータ集合に偶数個の数値が含まれる場合、この関数は中央に位置する2つの数値の平均値を返します。集計や分析関数として使用できます。
説明
- 分析関数として使用する場合、
OVER句を使用してウィンドウを定義し、計算を行います。これは一連の行の集合に対して計算を行い、複数の値を返します。 - 集計関数として使用する場合、この関数は一連の行の集合に対して集計計算を行い、結果は1つの値のみを返す必要があります。この場合、
OVER句は不要です。
構文
MEDIAN(expr) [ OVER (query_partition_clause) ]
パラメータの説明
パラメータ |
説明 |
|---|---|
| expr | 中央値を求める配列名を指定します。パラメータの型は数値データ型であるか、暗黙的に数値データ型へ変換可能でなければなりません。 |
| OVER | OVER 句を使用してウィンドウを定義し、計算を行います。詳細については、分析関数の説明を参照してください。 |
戻り値の型
exprのみを指定した場合、この関数はパラメータの数値データ型と同じデータ型を返します。OVER句を指定した場合、データベースは数値的に最も高い優先順位を持つパラメータを特定し、残りのパラメータをそのデータ型に暗黙的に変換して返します。
例
テーブル tbl1 を作成し、データを挿入します。
obclient> CREATE TABLE tbl1(col1 INT,col2 varchar(10),col3 INT,col4 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES(1,'A1',8,12),(1,'A2',10,15),(1,'A3',11,16),
(2,'B1',9,14),(2,'B2',10,15),(2,'B3',8,13),(2,'B4',11,16),(3,'C1',8,18),
(3,'C2',9,16),(3,'C3',10,15),(3,'C4',11,12),(3,'C5',12,10);
Query OK, 12 rows affected
Records: 12 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM tbl1;
+------+------+------+------+
| COL1 | COL2 | COL3 | COL4 |
+------+------+------+------+
| 1 | A1 | 8 | 12 |
| 1 | A2 | 10 | 15 |
| 1 | A3 | 11 | 16 |
| 2 | B1 | 9 | 14 |
| 2 | B2 | 10 | 15 |
| 2 | B3 | 8 | 13 |
| 2 | B4 | 11 | 16 |
| 3 | C1 | 8 | 18 |
| 3 | C2 | 9 | 16 |
| 3 | C3 | 10 | 15 |
| 3 | C4 | 11 | 12 |
| 3 | C5 | 12 | 10 |
+------+------+------+------+
12 rows in set
集計関数の例
col4 列の中央値を計算します。
obclient> SELECT MEDIAN(col4) FROM tbl1;
+--------------+
| MEDIAN(COL4) |
+--------------+
| 15 |
+--------------+
1 row in set
分析関数の例
col1 列でグループ化し、col4 列の中央値を計算します。
obclient> SELECT col1,col4,MEDIAN(col4) OVER(PARTITION BY col1) "MEDIAN"
FROM tbl1;
+------+------+--------+
| COL1 | COL4 | MEDIAN |
+------+------+--------+
| 1 | 12 | 15 |
| 1 | 15 | 15 |
| 1 | 16 | 15 |
| 2 | 14 | 14.5 |
| 2 | 15 | 14.5 |
| 2 | 13 | 14.5 |
| 2 | 16 | 14.5 |
| 3 | 18 | 15 |
| 3 | 16 | 15 |
| 3 | 15 | 15 |
| 3 | 12 | 15 |
| 3 | 10 | 15 |
+------+------+--------+
12 rows in set