问题描述
我确实在 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)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)