要实现总金额等于前一天的总金额减去当天的开销递减,可以使用 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录