微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法计算 Postgres 中的 percentile_disc、percent_rank 的收入

如何解决无法计算 Postgres 中的 percentile_disc、percent_rank 的收入

我确实在 SO 上查找了各种答案,但没有一个有帮助。任务是here

这是关于计算特定电影的电影收入,其中 film_id 和收入分配到 Postgresql 的 4 个表中。

预期答案:

film_id revenue percentile
11      35.76   23
1       36.77   24
30      46.91   35
20      67.90   53
10      131.77  90
21      167.78  97

我的收入是正确的,现在唯一剩下的一点就是计算百分位数。

我的查询

select 
film_id,revenue,percent_rank()   over(order by revenue) as percentile # this is the trouble part

from (

select film.film_id,sum(amount) as revenue

from film

inner join inventory 
on film.film_id = inventory.film_id
inner join rental on rental.inventory_id = inventory.inventory_id
inner join payment on payment.customer_id = rental.customer_id 
and rental.rental_id  = payment.rental_id
where film.film_id IN (1,10,11,20,21,30)
group by film.film_id)k

它产生这个输出

film_id revenue percentile
11      35.76   0
1       36.77   0.2
30      46.91   0.4
20      67.90   0.6
10      131.77  0.8
21      167.78  1

对于我尝试过的百分比窗口函数

percentile_disc(0.5) within group ( order by revenue) 

percentile_cont(0.5) within group ( order by revenue) over(partition by film_id)

我确实查找了 docs - 但不明白如何使百分位函数工作

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。