APPROX_PERCENTILE¶
目的のパーセンタイルの近似値を返します(列 c
に n
の数値がある場合、 APPROX_PERCENTILE(c、p)が返す数値は、 c
の数値の約 n * p
が返される数値よりも小さくなるような数値を返します)。
この関数は、t-Digestアルゴリズムの改良版を使用しています。詳細については、 パーセンタイル値の推定 をご参照ください。
構文¶
集計関数
APPROX_PERCENTILE( <expr> , <percentile> )
ウィンドウ関数
APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
引数¶
expr
数値に評価される列名などの有効な式。
percentile
0.0
以上で1.0
未満の定数の実数値です。これはパーセンタイルを示します(0~99.999...)。例:値0.65は、65番目のパーセンタイルを示します。expr3
これは、行をパーティションにグループ化するために使用されるオプションの式です。
戻り値¶
出力は DOUBLE 値として返されます。
使用上の注意¶
パーセンタイルは数値でのみ機能するため、
expr
は数値または数値にキャストできる値を生成する必要があります。返される値は、必ずしもデータセットにあるとは限りません。
返される値は近似値です。データセットのサイズとデータセット内のスキューは、近似値の精度に影響します。
ウィンドウ関数として使用する場合:
この関数は次をサポートしていません。
OVER()句のORDER BY サブ句。
ウィンドウフレーム。
例¶
APPROX_PERCENTILE
関数のデモ:
値が含まれるテーブルを作成および生成します。
CREATE TABLE testtable (c1 INTEGER); INSERT INTO testtable (c1) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);クエリを実行し、出力を表示します。
SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.1) | |----------------------------| | 1.5 | +----------------------------+SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.5) | |----------------------------| | 5.5 | +----------------------------+この場合に返される値は、実際にデータセットに含まれるどの値よりも高くなります。
SELECT APPROX_PERCENTILE(c1, 0.999) FROM testtable; +------------------------------+ | APPROX_PERCENTILE(C1, 0.999) | |------------------------------| | 10.5 | +------------------------------+