首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL聚合每月和每年获得

SQL聚合每月和每年获得
EN

Stack Overflow用户
提问于 2022-02-16 20:27:55
回答 2查看 352关注 0票数 0

我试图获得每月总计的汇总,并在相同的SQL查询中添加额外的年度总计行。

代码语言:javascript
运行
复制
Table table_1

id    date        amount   currency

 1    2017-01-01  76.89     CAD
 2    2017-01-17  90.89     CAD
 3    2017-01-18  65        USD
 4    2017-05-13  45        CAD
 5    2017-07-19  76.70     CAD
 6    2018-08-13  67.34     CAD
 7    2018-09-11  50        CAD
 8    2018-09-09  45        CAD
 9    2018-08-12  67        CAD
 10   2018-07-10  55        USD
 11   2018-07-11  13        USD

我已经尝试过这个查询获得每月和按货币分组的总数。

代码语言:javascript
运行
复制
    SELECT SUM(amount),
           currency, 
           MONTH(date)
   FROM invoices 
   GROUP BY MONTH(date), YEAR(date), currency

我想要的结果原型

结果原型

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-16 21:01:13

整年的行包含月份列中的NULL值。

代码语言:javascript
运行
复制
SELECT MONTH(date) AS Month,
       YEAR(date) AS Year,
       currency AS Currency,
       SUM(amount) AS Total
FROM invoices 
GROUP BY MONTH(date), YEAR(date), currency
UNION ALL
SELECT NULL, YEAR(date), currency, SUM(amount)
FROM invoices 
GROUP BY YEAR(date), currency
ORDER BY Year, Month IS NULL, Month

您可以找到一个演示这里

编辑:按需要排序结果集

EDIT2:我仍然不明白为什么以前这个解决方案是不可接受的,我对它做了一些调整,以使它与新的结果原型相一致。

票数 0
EN

Stack Overflow用户

发布于 2022-02-18 09:44:34

SELECT列或ORDER列的顺序可能与GROUP列的顺序不同。

然后,您可以使用GROUP BY WITH ROLLUP并检查什么是使用GROUPING()的超级聚合,以选择要聚合到的级别,以及显示所有内容的顺序。

代码语言:javascript
运行
复制
SELECT
   YEAR(date),
   MONTH(date),
   currency,
   SUM(amount)
FROM
   invoices
GROUP BY
   currency,
   YEAR(date),
   MONTH(date)
WITH
   ROLLUP
HAVING
   GROUPING(Currency) = 0  -- don't ROLLUP the currency
ORDER BY
   GROUPING(YEAR(date)),  -- individual years first, super-aggregate last
   YEAR(date),
   GROUPING(MONTH(date)), -- individual months first, super-aggregate last
   MONTH(date),
   currency
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71148872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档