使用余额历史拉链表acct用一个sql计算每个账户2020/1/1,2020/3/31期间的利息,表中有账号,余额,利率,开始日期,结束日期,公式:(bal*rate*days/360))
时间: 2024-03-29 15:36:53 浏览: 76
利息计算表
好的,根据您的需求,可以使用以下 SQL 语句计算每个账户在 2020/1/1 到 2020/3/31 期间的利息:
```
SELECT
acct,
SUM(bal * rate * DATEDIFF(LEAST(end_date, '2020-03-31'), GREATEST(start_date, '2020-01-01')) / 360) AS interest
FROM
acct_history
WHERE
(
start_date <= '2020-03-31' AND end_date >= '2020-01-01'
) OR (
start_date >= '2020-01-01' AND start_date <= '2020-03-31'
)
GROUP BY
acct;
```
其中,`acct_history` 为余额历史拉链表,包含账号 `acct`、余额 `bal`、利率 `rate`、开始日期 `start_date` 和结束日期 `end_date` 等字段。
在 SQL 语句中,我们首先使用 WHERE 子句筛选出在 2020/1/1 到 2020/3/31 期间有余额的账户记录,然后使用 DATEDIFF 函数计算出每个账户在这个时间段内的天数,最后根据公式计算出利息。
最后,使用 GROUP BY 子句按账户进行分组,得到每个账户在该时间段内的总利息。
阅读全文