获取项目所属的百分位数 SQL

Getting the percentile the item belongs to in SQL

我正在尝试整理一些简单的统计数据,但坚持根据作者的总分计算作者所属的百分位数:

select
    [by] author,
    count(*) count,
    sum(score) sum_score,
    quantiles(sum(score), 101) percentile_sum_score,
from
    [bigquery-public-data:hacker_news.stories]
group by
    author

此代码 returns 每个作者的 sum(score)percentile_sum_score 列(定义为 quantiles(sum(score), 101))。但不是作者相对于其他作者所处的百分位数。

这发生在 BigQuery, and some conventional functions are not available (docs)。

有没有办法获得正确的统计数据?

您可能正在寻找 PERCENT_RANK() 函数
以下是您的示例的可能用途

SELECT
    author,
    [count],
    sum_score,
    PERCENT_RANK() OVER(ORDER BY sum_score DESC) percentile_sum_score,
FROM (
  SELECT
    [by] author,
    COUNT(1) [count],
    SUM(score) sum_score,
  FROM [bigquery-public-data:hacker_news.stories]
  GROUP BY author
)