説明
この関数は、パーセンタイル値と指定されたソート規範に基づき、(同一のソート規範に対して)パーセンタイル値以上の最小累積分布値を返します。計算時には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