2014-05-10 50 views
-2

我的訂單與這些列的表:order_item order_category order_date的 所以數據看起來像這樣:MySQL的訂單按類別按月

order_item order_category order_date 
1235  hardware   2014-01-07 
1349  bedding   2014-01-07 
1636  hardware   2014-01-08 

大約有20個產品類別。該查詢得到我有多少項目是按類別每一天下令:

SELECT order_date, count(order_item) as num, order_category 
FROM orders 
GROUP BY order_date, order_category 

我希望得到的結果,顯示月和每個類別的計數,所以它看起來像這樣:

month bedding hardware etc 
2013-12 5  8 
2014-01 9  0 

我可以用mysql做到這一點嗎?

+0

'按月份分組(日期欄)' –

+4

這個問題似乎是f話題,因爲它缺乏基礎研究 – Strawberry

+0

問題不是按月彙總,而是按類別進行。有了這個提示,您應該可以在30秒內將谷歌解決方案應用到工​​作解決方案中。 –

回答

0

試試這個:

SELECT '2014-01' month , SUM(CASE WHEN order_category = 'hardware' 
         THEN 1 ELSE 0 END)as hardware, 
          SUM(CASE WHEN order_category = 'bedding' 
         THEN 1 ELSE 0 END)as bedding 
    FROM Table1 
    WHERE MONTH(order_date) = 01 AND year(order_date) = 2014 

    UNION all 

    SELECT '2013-12' month , SUM(CASE WHEN order_category = 'hardware' 
         THEN 1 ELSE 0 END)as hardware, 
          SUM(CASE WHEN order_category = 'bedding' 
         THEN 1 ELSE 0 END)as bedding 
    FROM Table1 
    WHERE MONTH(order_date) = 12 AND year(order_date) = 2013 

DEMO

+0

感謝您的所有意見。這太棒了,我確實在日期中使用了varchar - 但是我想我無法避免在查詢中命名每個類別? – gorilla5

0

您還必須按年分組,或者每年獲得'每年一月'的結果。

SELECT order_date, count(order_item) as num, order_category 
FROM orders 
GROUP BY order_category, year(datefield), month(date field) desc; 

一個簡單的谷歌的 'MySQL的組按年份和月份' 給出了這樣的罰款後...

Group by month and year in MySQL

+0

OP確實要求將結果進行調整。 –