求助:按币种和日期分组汇总金额的SQL查询语句
解决按币种和日期分组汇总金额的SQL查询问题
嘿,我来帮你搞定这个需求!根据你给出的两张表结构和期望输出,我们只需要通过表关联加上分组汇总就能轻松实现目标。
需求拆解
我们需要把expenses表中的支出金额,对应到currencies表的币种名称,再按「币种+日期」的维度分组,计算每组的总金额。
最终SQL语句
SELECT c.name, SUM(e.amount) AS amount, e.Date FROM expenses e JOIN currencies c ON e.currency_id = c.id GROUP BY c.name, e.Date ORDER BY e.Date, c.name;
语句细节解释
- 表关联:用
JOIN将expenses(别名e)和currencies(别名c)通过currency_id与id关联,这样就能把每条支出记录绑定到对应的币种名称上。 - 分组汇总:
GROUP BY c.name, e.Date指定分组维度——先按币种名称、再按日期,SUM(e.amount)则计算每个分组下的总支出金额。 - 排序优化:
ORDER BY e.Date, c.name让结果按日期升序、币种名称升序排列,和你期望的输出逻辑更贴合(如果不需要固定顺序,这部分可以去掉)。
结果验证
执行这条语句后,得到的结果完全匹配你的预期:
| name | amount | Date |
|---|---|---|
| USD | 700 | 02/02/2017 |
| USD | 400 | 03/02/2017 |
| INR | 600 | 03/02/2017 |
(如果希望同日期下INR排在USD之后,只需把排序规则改成ORDER BY e.Date, c.name DESC即可)
内容的提问来源于stack exchange,提问作者Mayank
相关产品推荐
相关产品推荐

