非常简单,假设我要对组内的全部功能求和。
所以我在一个窗口函数上进行了分区:
SELECT sum(NumberOfPlayers) over (partition by sport) as SumOfSport
太好了,这很好。现在..我想知道在我所有的总和中该总和的百分比。
例如,在五项运动中有9名运动员参加的运动,在五项运动中排名第二,将排在第40位。
让我们从简单开始。.我想知道第20个百分位数在哪里。
... PERCENTILE_CONT(0.2) WITHIN GROUP (ORDER BY SumOfSport ASC) OVER (PARTITION BY NumberOfPlayers) AS AVGPV20
但这失败了。您不能在SELECT
中使用上一个窗口功能。
那么我们如何在这里使用PERCENTILE_CONT而不必进行联接?
答案 0 :(得分:1)
使用子查询:
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
重新加入即可。