我有这样的 table ,
SELECT
payment_id,amount,payment_date
FROM payment
为了获取每月总金额,我将查询编写为
SELECT
payment_id
, SUM(amount) AS Total
, MonthName(payment_date) AS Month
FROM payment
但是我在金额表中得到了错误的答案,因为所有值都添加到同一个月。
payment_id amount payment_date
1 19.00 May
如果有人能帮助我解决这个问题,我将不胜感激?
最佳答案
首先,始终包含年份和月份 - 大概这就是您的意图。
其次,您需要一个分组依据
。我建议:
SELECT year(payment_date) as yyyy, monthname(payment_date) as mm,
SUM(amount) AS Total
FROM payment p
GROUP BY year(payment_date), monthname(payment_date)
ORDER BY MIN(payment_date);
我添加了 ORDER BY
,这样您就能以合理的顺序获得结果集(而不是按月份名称的字母顺序排列)。
请注意, payment_id
在 GROUP BY
中没有意义。它在付款
中的每一行可能都是唯一的。 MySQL 会在每一行上放置一个任意值。如果您在 SELECT
中包含 payment_id
而在 GROUP BY
中没有,几乎任何其他数据库都会生成错误。
关于mysql - sql查询每月金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48481430/