説明
この関数は、あるパーセンタイル値と指定されたソート規範に基づいて、そのパーセンタイル値以上の最小累積分布値(同一ソート規範に対して)を返します。計算時にNULL値は無視されます。
説明
- 分析関数として使用する場合は、
OVER句を使用してウィンドウを定義して計算する必要があります。これは一連の行集合に対して計算を行い、複数の値を返します。 - 集約関数として使用する場合、この関数は一連の行集合に対して集約計算を行い、結果として1つの値しか返せません。この場合、
OVER句を追加する必要はありません。
構文
PERCENTILE_DISC(expr1) WITHIN GROUP (ORDER BY expr2 [ DESC | ASC ])
[ OVER (query_partition_clause) ]
パラメータの説明
| パラメータ | 説明 |
|---|---|
| expr1 | 指定されたパーセンタイル値は、数値データ型の定数であり、その値の範囲は [0,1] です。 |
| expr2 | ソートおよびパーセンテージ計算に使用する式を指定します。データ型は数値型または日付時刻型に属します。 |
| DESC | ASC | リストのソート方法を指定します。オプションです。
|
| OVER | OVER 句を使用してウィンドウを定義し、計算を行います。詳細については、分析関数の説明を参照してください。 |
戻り値の型
パラメータ expr2 と同じデータ型を返します。
例
既に作成されたテーブル tbl1 があります。
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 PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY col4) "PERCENTILE_DISC" FROM tbl1;
+-----------------+
| PERCENTILE_DISC |
+-----------------+
| 15 |
+-----------------+
1 row in set
分析関数の例
列 col1 でグループ化し、列 col4 の離散パーセンタイル中央値を計算します。
obclient> SELECT col1,col4,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY col4) OVER(PARTITION BY col1) "PERCENTILE_DISC"
FROM tbl1;
+------+------+-----------------+
| COL1 | COL4 | PERCENTILE_DISC |
+------+------+-----------------+
| 1 | 12 | 15 |
| 1 | 15 | 15 |
| 1 | 16 | 15 |
| 2 | 14 | 14 |
| 2 | 15 | 14 |
| 2 | 13 | 14 |
| 2 | 16 | 14 |
| 3 | 18 | 15 |
| 3 | 16 | 15 |
| 3 | 15 | 15 |
| 3 | 12 | 15 |
| 3 | 10 | 15 |
+------+------+-----------------+
12 rows in set