我需要按年计算收入产生的利润。下面是示例5年和产生的收入:
year revenue
1 5,000,000
2 10,000,000
3 25,000,000
4 30,000,000
5 30,000,000
下面列出了用于计算利润的百分比,该百分比取决于当年的绝对收入。本质上,所产生的利润百分比随着收入的增加而减少。
下表列出了给定百分比的最低收入。例如:收入不超过1500万的收入的利润百分比为30%,收入15-20m的收入> 28%,收入20-25m的收入> 25%至25m +的收入> 20%。
min_revenue profit_perc
0 0.3
15,000,000 0.28
20,000,000 0.25
25,000,000 0.2
例如,在第1年,计算很简单,因为收入仅落入一个桶,因此只需5,000,000 * 0.3
即可获利。
由于收入分成多个类别,因此在第4年和第5年的计算变得更加复杂。第4年的计算示例:
15,000,000 * 0.3 + 5,000,000 * 0.28 + 5,000,000 * 0.25 + 5,000,000 * 0.2
老实说,不知道在sql中从哪里开始,将不胜感激。
答案 0 :(得分:0)
嗯。我建议将max_revenue
添加到收入表中。在大多数数据库中,您可以只使用lead()
来完成此操作。
select year, revenue, sum(prof)
from (select year, revenue, min(e.revenue, r.max_revenue) * r.profit_perc as prof
from example5 e join
revenue r
on e.revenue >= e.min_revenue
) yr
group by year, revenue;
如果您不能直接添加它,则可以使用相关的子查询来获取下一个收入。