我有'orders'表,其中包含以下数据:
--------------------------------- 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
我想在当年显示每个月的SUM('金额'),我希望稍后使用此数据创建图表。
我希望达到这样的效果。
--------------------------------- 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
我创建了一个单独的表'月',其中包含了一年中的所有月份,然后我离开了加入'订单',但它不起作用,这是我使用的查询。
请帮忙。
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')
答案 0 :(得分:2)
month()函数返回一个数字,而不是月份名称。
使用monthname()功能或将月份号存储在助手表中,而不是月份名称。后者稍微更可靠,因为mysql的语言设置会影响monthname()函数的返回值。