2016-04-25 71 views
1

我试图把一些简单的统计,但坚持认为计算笔者属于根据他的总成绩百分位数百分比:获得该项目属于在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 

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

这发生在BigQuery,并且一些常规功能不可用(docs)。

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

回答

1

你可能会寻找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 
)