利用MySQL实现递减余额的方法
P粉473363527
P粉473363527 2023-09-01 21:11:53
[MySQL讨论组]

如何使用mysql创建递减余额查询以计算会计中的折旧

例如设备成本为16,000美元,预计使用寿命为5年,折旧率为40%。折旧

年份  起始账面价值  折旧率  折旧额  结束账面价值
1          16,000      40%   6,400        9,600
2           9,600      40%   3,840        5,760
3           5,760      40%   2,304        3,456
4           3,456      40%   1,382.40     2,073.60
5           2,073.60   40%     829.44     1,244.16

如何创建函数/查询以获得上述结果?谢谢

P粉473363527
P粉473363527

全部回复(1)
P粉917406009

您可以使用递归CTE来得到您想要的结果。例如:

with recursive
p as (select 16000.00 as book_value, 0.4 as rate, 5 as total_years),
y (year, book_value_start, rate, depreciation, book_value_end) as (
  select 1, book_value, rate,
    round(rate * book_value, 2),
    book_value - round(rate * book_value, 2)
  from p
 union all
  select
    y.year + 1, y.book_value_end, y.rate,
    round(y.rate * y.book_value_end, 2),
    y.book_value_end - round(y.rate * y.book_value_end, 2)
  from y
  cross join p
  where y.year < p.total_years
)
select * from y order by year

结果:

year  book_value_start  rate  depreciation  book_value_end 
 ----- ----------------- ----- ------------- -------------- 
 1     16000.00          0.4   6400.00       9600.00        
 2     9600.00           0.4   3840.00       5760.00        
 3     5760.00           0.4   2304.00       3456.00        
 4     3456.00           0.4   1382.40       2073.60        
 5     2073.60           0.4   829.44        1244.16

DB Fiddle上查看运行示例。

注意:所有三个参数在第二行中定义。如果您想要更改起始值、利率或年数,请在那里进行更改。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号