首页 > 解决方案 > SQL查询计算并显示一年中每个月的总和数据

问题描述

我有一些数据如下的“订单”表:

---------------------------------
编号 | 金额 | 订购日期   
---------------------------------
1 | 100.00 | 2018-03-12
2 | 120.00 | 2018-03-25
3 | 200.00 | 2018-04-10
4 | 250.00 | 2018-04-20
5 | 300.00 | 2018-05-02

我想显示当年每个月的 SUM('amount'),我想稍后使用这些数据创建图表。

我想达到这样的结果。

---------------------------------
月 | 总和(金额)
---------------------------------
一月 | 0.00  
二月 | 0.00
三月 | 320.00
四月 | 450.00
麦 | 300.00
六月 | 0.00
七月 | 0.00
八月 | 0.00
九月 | 0.00
十月 | 0.00
十一月 | 0.00
十二月 | 0.00

我创建了一个单独的表“月”,其中包含一年中的所有月份,然后我留下了加入“订单”,但它没有用,这是我使用的查询。

请帮忙。

SELECT months.month, IFNULL( sum(orders.amount), 0 ) AS amount
FROM months
LEFT OUTER JOIN orders ON month(orders.order_date) = months.month
GROUP BY months.month


更新

最后我让它工作了这是我的查询

SELECT IFNULL( sum(orders.amount), 0 ) 作为金额
从几个月
左外连接订单 on monthName(orders.order_date) = months.month
按月分组
按字段排序(月,'一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月', '十二月')

标签: mysql

解决方案


month()函数返回一个数字,而不是月份的名称。

要么使用monthname()函数,要么将月份的数字存储在帮助表中,而不是月份的名称。后者稍微可靠一些,因为 mysql 的语言设置会影响 monthname() 函数的返回值。


推荐阅读