我有这样的表,
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
如果有人可以帮我解决这个问题,我将不胜感激?
答案 0 :(得分:1)
首先,总是包括月份的年份 - 可能这是你想要的。
其次,您需要group by
。我建议:
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
中没有意义。它在payment
的每一行都可能是唯一的。 MySQL将在每一行上放置一个任意值。如果payment_id
中有SELECT
但GROUP BY
中没有{{1}},则几乎任何其他数据库都会产生错误。
答案 1 :(得分:0)
您必须按月对数据进行分组才能获得总和。
SELECT SUM(amount), MONTH(payment_date) FROM payment GROUP BY payment_date
答案 2 :(得分:0)
SELECT
SUM(amount) AS Total,
MonthName(payment_date) AS Month
FROM payment
GROUP BY MonthName(payment_date)
答案 3 :(得分:0)