使用SQL使用阈值计算利润

时间:2018-06-27 16:16:45

标签: sql sqlite

我需要按年计算收入产生的利润。下面是示例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中从哪里开始,将不胜感激。

1 个答案:

答案 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;

如果您不能直接添加它,则可以使用相关的子查询来获取下一个收入。