[英]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.