繁体   English   中英

如何在 SQL 命令行中按月汇总值?

[英]How do I sum up values by month in SQL command line?

我想总结一个变量,它是来自 2 个不同表的 2 个变量的总和。

SELECT EXTRACT(MONTH FROM Service.EDate) AS MONTH, 
       SUM(Insurance.Price+Service.Charge) AS PROFIT
FROM 
Service INNER JOIN 
Insurance ON Service.Code=Insurance.Code
WHERE EXTRACT(YEAR FROM Service.EDate)=2018
GROUP BY Service.EDate
ORDER BY Service.EDate;

预计答案是 MONTH 有 1 个值(1,2,3,4,5 等和利润总结)但我得到 MONTH 像利润([1,105],[1,405],[1,320 ],[2,410],[2,110] 等具有 [MONTH,PROFIT])

您似乎想要GROUP BY中的MONTH

SELECT EXTRACT(MONTH FROM s.EDate) AS MONTH, 
       SUM(i.Price + s.Charge) AS PROFIT
FROM Service s INNER JOIN 
     Insurance i
     ON s.Code = i.Code
WHERE EXTRACT(YEAR FROM s.EDate) = 2018
GROUP BY EXTRACT(MONTH FROM s.EDate)
ORDER BY EXTRACT(MONTH FROM s.EDate);

请注意,我添加了表别名,因此查询更易于编写和阅读。

我建议对WHERE子句使用日期比较而不是EXTRACT()

WHERE s.EDate >= DATE '2018-01-01' AND
      s.EDate < DATE '2019-01-01'

这有助于优化器,尤其是可以使用索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM