SQL 实现总金额递减:前一天总金额减去当天开销
要实现总金额等于前一天的总金额减去当天的开销递减,可以使用 SQL 中的窗口函数和自连接。
假设有一个名为 'transaction' 的表,包含以下列:
- 'id':交易ID
- 'date':交易日期
- 'amount':交易金额
- 'expense':开销金额
可以使用以下 SQL 查询来计算总金额:
SELECT date, SUM(amount - expense) OVER (ORDER BY date) AS total_amount
FROM transaction
这个查询会按照日期顺序计算每天的总金额,通过 SUM(amount - expense) OVER (ORDER BY date) 来实现累计求和。
如果要计算每天的递减金额,可以使用自连接查询:
SELECT t1.date, t1.total_amount - t2.total_amount AS decrease_amount
FROM (
SELECT date, SUM(amount - expense) OVER (ORDER BY date) AS total_amount
FROM transaction
) t1
JOIN (
SELECT date, SUM(amount - expense) OVER (ORDER BY date) AS total_amount
FROM transaction
) t2 ON t1.date = DATE_ADD(t2.date, INTERVAL 1 DAY)
这个查询会将每天的总金额与前一天的总金额进行比较,计算出递减金额。使用自连接查询的方式可以将两个相邻日期的数据进行关联比较。
原文地址: https://www.cveoy.top/t/topic/pmoP 著作权归作者所有。请勿转载和采集!