根据bigquery查询引用,目前Quantiles不允许通过另一列进行任何类型的分组.我主要感兴趣的是按一定列分组中位数.我现在看到的唯一工作是为每个不同的组成员生成一个分位数查询,其中组成员是where子句中的条件.
例如,如果我想获得所需的结果,我会对列-y中的每个不同行使用以下查询.
SELECT QUANTILE( <column-x>, 1001)
FROM <table>
WHERE
<column-y> == <each distinct row in column-y>
Run Code Online (Sandbox Code Playgroud)
谢谢
通过最近公布的percentile_cont()窗口函数,您可以获得中位数.
请看公告博客文章中的示例:
SELECT MAX(median) AS median, room FROM (
SELECT percentile_cont(0.5) OVER (PARTITION BY room ORDER BY data) AS median, room
FROM [io_sensor_data.moscone_io13]
WHERE sensortype='temperature'
)
GROUP BY room
Run Code Online (Sandbox Code Playgroud)
虽然有有效的算法来计算分位数,但它们在某种程度上是内存密集型的 - 尝试在单个查询中进行多个分位数计算会变得昂贵。