2016-04-25 10 views
1

gehört Ich versuche, zusammen ein paar einfache Statistiken zu setzen, aber mit der Berechnung die Perzentile fest, dass der Autor nach seinem Gesamtscore gehört:Erste das Perzentil der Artikel 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 

Dieser Code zurückkehrt Jeder Autor sum(score) in der Spalte percentile_sum_score (definiert als quantiles(sum(score), 101)). Aber nicht das Perzentil, in dem sich der Autor befindet, im Vergleich zu anderen Autoren.

Dies geschieht in BigQuery, und einige herkömmliche Funktionen sind nicht verfügbar (docs).

Gibt es eine Möglichkeit, die richtigen Statistiken zu erhalten?

Antwort

1

Sie für PERCENT_RANK() Funktion
Unten suchen konnten besteht die Möglichkeit, für Ihr Beispiel

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 
)