-- 第4天的复利计算公式
SELECT 1000 * (POWER(1.003 , 4)-1)
-- 你要差值,所以减去第3天
SELECT 1000.0 * (POWER(1.003 , 4)-POWER(1.003 , 3))
-- 第 @n 天的计算公式是
SELECT 1000.0 * (POWER(1.003 , @n)-POWER(1.003 , @n-1))
SELECT 1000 * (POWER(1.003 , 4)-1)
-- 你要差值,所以减去第3天
SELECT 1000.0 * (POWER(1.003 , 4)-POWER(1.003 , 3))
-- 第 @n 天的计算公式是
SELECT 1000.0 * (POWER(1.003 , @n)-POWER(1.003 , @n-1))
欠费 第几天 违约金
1000 1 3
1000 2 3.009
1000 3 3.018027对于第四天的数据create table FeeTab
(
Fee decimal(13,2), ---欠費
[days] int, ---第几天
ExtraMoney float ---违约金,如果确定保留几位小数,建议用decimal
)
--插入数据,其中m为欠费,n为第几天
insert FeeTab values(m,n,(isnull((select SUM(ExtraMoney)from FeeTab where [days]<n and Fee=m),0)+m)*0.003)
-- 凑个人数 with mt as (
select row_number() over(order by id) days from sysobjects )
select sum(POWER(1.003000 , days) * 1000 - 1000) as totalmoney
from mt
where days <= 10
totalmoney
---------------------------------------
166.494000(1 行受影响)