SQL:如何在组之间执行组总和的百分点



非常简单,假设我想总结一个组中的一个功能。

所以我通过窗口函数进行分区:

SELECT sum(NumberOfPlayers) over (partition by sport) as SumOfSport

太好了,这很好。现在..我想知道我刚刚赚取的所有款项中的这一总和。

一项具有9个球员的运动,例如,在五项运动中排名第二,其中排名第2位,将是第40个百分位数。

让我们开始简单..我想知道20个百分点在哪里。

... PERCENTILE_CONT(0.2) WITHIN GROUP (ORDER BY SumOfSport ASC) OVER (PARTITION BY NumberOfPlayers) AS AVGPV20

但这失败了。您不能在SELECT中使用以前的窗口函数。

那么,我们如何在这里使用persitile_cont而不需要加入?

使用子查询:

select sport, sum(NumberOfPlayers),
       percentile_cont(0.2) within group (order by   sum(NumberOfPlayers) asc) over () AS avgpv20
from t
group by sport;

然后join此结果回到您的原始查询。

尝试在不汇总数据的情况下进行percentile_cont()将非常具有挑战性 - 因为复制了单个值。仅汇总和 join返回。

更简单

相关内容

  • 没有找到相关文章

最新更新