2016-04-25 31 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 
)