3

BigQuery with Legacy SQL 有一个非常方便的QUANTILES功能,可以快速获取表中值的直方图,而无需手动指定存储桶。

在标准 SQL中可用的聚合函数中,我找不到很好的等价物。我是否错过了一些明显的东西,或者以其他方式模拟它的标准方法是什么?

4

1 回答 1

15

您正在寻找该APPROX_QUANTILES功能:) 文档中的一个示例是:

#standardSQL
SELECT APPROX_QUANTILES(x, 2) AS approx_quantiles
FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x;

+------------------+
| approx_quantiles |
+------------------+
| [1, 5, 10]       |
+------------------+

请注意,它返回一个数组,但如果您希望将数组的元素作为单独的行,您可以取消嵌套结果:

#standardSQL
SELECT
  quant, offset
FROM UNNEST((
  SELECT APPROX_QUANTILES(x, 2) AS quants
  FROM UNNEST([NULL, NULL, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10]) AS x
)) AS quant WITH OFFSET
ORDER BY offset;
于 2017-05-10T14:43:24.390 回答