让我们假设我有一个税收生成模块,对某些金额范围的税是动态的。范围存储在如下表格中:
+---------------+---------------+-----------+
| range_from | range_to | rate |
+---------------+---------------+-----------+
| 0 1000 25 |
| 1001 5000 30 |
| 5001 8000 40 |
| 8000 - 50 |
+-------------------------------------------+
此范围表可以包含任意数量的行。
那么,如何使用MySQL上的函数从上表中获得税额呢?
如果我提供20000,它应该计算如
1000 * 0.25 + 4000 * 0.30 + 3000 * 0.40 + 12000 * 0.50
我试过用,
set @remaining_amount = @provided_amount;
for x in (select * from range_table)
loop
if(@provided_amount > x.range_to)
set @tax_amt+=(x.range_to-x.range_from)* x.rate/100;
set @remaining_amt-= x.range_to-x.range_from;
end if;
if(@provided_amount > x.range_from and x.range_to = '-')
set @tax_amt+=(@remaining_amount)* x.rate/100;
end if;
end loop;
但我没有找到“for loop”在MySQL上工作。
有任何建议/帮助吗?
答案 0 :(得分:2)
试试这个:
SUM(IF(x < range_from, 0,
IF(x < range_to OR range_to IS NULL, (x - range_from)*rate*0.01,
(range_to - range_from)*rate*0.01))