使用sql计算具有阈值的利润

使用sql计算具有阈值的利润,sql,sqlite,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-2000万美元之间>

我需要按年度计算收入产生的利润。下面是示例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-2000万美元之间>28%,收入介于20-2500万美元之间>25%和2500万美元以上>20%

 min_revenue     profit_perc
 0               0.3
 15,000,000      0.28
 20,000,000      0.25
 25,000,000      0.2
例如,在第1年,计算很简单,因为收入只落在一个桶中,因此只需
5000000*0.3
即可获得利润

第4年和第5年的计算变得更加复杂,因为收入分为多个部分。第4年的计算示例:

15000000*0.3+5000000*0.28+5000000*0.25+5000000*0.2


老实说,我不知道从哪里开始在sql中使用这个,任何帮助都将不胜感激

Hmmm。我建议将
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;

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

示例数据,预期输出。