web-dev-qa-db-ja.com

BigQueryでパーセンタイルを計算する

BigQueryを使用しており、データセットの列の25パーセンタイル、50パーセンタイル、および75パーセンタイルを計算する必要があります。

たとえば、BigQueryとSTANDARDSQLを使用して前述の数値を取得するにはどうすればよいですか。 PERCENT_RANK、RANK、およびNTILE関数を見てきましたが、解読できないようです。

これが私を導くかもしれないいくつかのコードです

助けに感謝します!

7
Praangrammer

標準SQLの APPROX_QUANTILES 関数を確認してください。 100分位数を要求すると、パーセンタイルが得られます。したがって、クエリは次のようになります。

SELECT percentiles[offset(25)], percentiles[offset(50)], percentiles[offset(75)]
FROM (SELECT APPROX_QUANTILES(column, 100) percentiles FROM Table)
14

概算集計が機能しない場合は、PERCENTILE_CONT関数を使用することをお勧めします(ただし、より多くのメモリを使用するため、巨大なデータでは機能しない可能性があります)。次の例は ここ からです

SELECT
  PERCENTILE_CONT(x, 0) OVER() AS min,
  PERCENTILE_CONT(x, 0.01) OVER() AS percentile1,
  PERCENTILE_CONT(x, 0.5) OVER() AS median,
  PERCENTILE_CONT(x, 0.9) OVER() AS percentile90,
  PERCENTILE_CONT(x, 1) OVER() AS max
FROM UNNEST([0, 3, NULL, 1, 2]) AS x LIMIT 1;

+-----+-------------+--------+--------------+-----+
| min | percentile1 | median | percentile90 | max |
+-----+-------------+--------+--------------+-----+
| 0   | 0.03        | 1.5    | 2.7          | 3   |
+-----+-------------+--------+--------------+-----+
1
Hoda