mysql - sql查询每月金额

标签 mysql sql database pentaho-spoon

我有这样的 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/

相关文章:

python - 如何通过代理自动连接到Cloud SQL?

mysql - 将 MySQL 时间戳字段转换为 SQL Server 2005 日期字段

MySQL查询 - 获取未购买单个产品ID所有部分的客户

sql - 查询以将相同的 ID 分配给插入的行,如果它已存在于表中

c++ - 如何避免在程序启动时重新加载大数据

sql - PostgreSQL - 获取按日期时间列分组的表中 N 个间隔的项目计数

sql - 在 VB NET 中从 SQL 数据库中检索位列

mysql - 如何在服务器上存储多张图片?

MYSQL 对每种可能的情况进行计数和求和

Mysql性能调优问题