求编写MySQL查询语句以获取下图所示的最终查询结果
MySQL查询实现收支及累计余额统计
假设你的交易数据表名为transactions,包含字段:transaction_date(交易日期)、type(交易类型,取值为Income或Expense)、amount(交易金额)。以下查询语句可以得到你需要的结果:
SELECT transaction_date AS `Date`, SUM(CASE WHEN type = 'Income' THEN amount ELSE 0 END) AS `Income`, SUM(CASE WHEN type = 'Expense' THEN amount ELSE 0 END) AS `Expense`, SUM(SUM(CASE WHEN type = 'Income' THEN amount ELSE -amount END)) OVER (ORDER BY transaction_date) AS `Balance` FROM transactions GROUP BY transaction_date ORDER BY transaction_date;
语句说明:
- 利用
CASE表达式结合SUM聚合函数,分别统计每日的收入和支出总额; - 通过窗口函数
SUM() OVER (ORDER BY transaction_date),计算从起始日期到当前日期的累计收支差额,即余额; - 如果你的表字段名、表名或交易类型的取值与假设不同,只需对应替换即可。
内容的提问来源于stack exchange,提问作者Mustafa
相关产品推荐
相关产品推荐

