sql查询每月金额

时间:2018-01-27 22:59:47

标签: mysql sql database pentaho-spoon

我有这样的表,

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

如果有人可以帮我解决这个问题,我将不胜感激?

4 个答案:

答案 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_idGROUP BY中没有意义。它在payment的每一行都可能是唯一的。 MySQL将在每一行上放置一个任意值。如果payment_id中有SELECTGROUP 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)

由于您只有SQL解决方案,因此这是一个典型的PSI(Pentaho-spoon)解决方案。enter image description here

基本上,它是一样的。然而

  • 它是可视的,因此在您获得更复杂的查询时更容易维护。
  • 您没有要输入的文字,只有鼠标点击。
  • 您的输入可能来自其他来源,而不是单个数据库。
  • 每次(或每小时)一次点击即可。