我有“订单”表,其中包含以下数据:
---------------------------------
id | amount | order_date
---------------------------------
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
我想显示当前年度每个月的总和(“金额”),我想稍后使用此数据创建图表。
我想达到这样的效果。
---------------------------------
month | sum(amount)
---------------------------------
January | 0.00
February | 0.00
March | 320.00
April | 450.00
Mai | 300.00
June | 0.00
July | 0.00
August | 0.00
September | 0.00
October | 0.00
November | 0.00
December | 0.00
我创建了一个单独的表'months',其中包含一年中的所有月份,然后我留下了join'orders',但它不起作用,这是我使用的查询。
请帮忙。
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 ) AS amount
FROM months
LEFT OUTER JOIN orders ON monthName(orders.order_date) = months.month
GROUP BY months.month
Order BY FIELD(MONTH,'January','February','March','April', 'May', 'June', 'Jully', 'August', 'September', 'October', 'November', 'December')
1条答案
按热度按时间ia2d9nvy1#
函数的作用是:返回一个数字,而不是月份的名称。
可以使用monthname()函数,也可以在helper表中存储月份号,而不是月份名。后者稍微可靠一些,因为mysql的语言设置会影响monthname()函数的返回值。