2017-08-09 70 views
0

我有一個具有兩列的數據庫 - resulttime如何使用mysql按月查詢行和按列查詢?

我想了解有多少行特定月份的每個result存在計數。有隻有兩個結果successfailure

選擇我已經成功地獲得多少行有各月的計數,但我不能得到多少success的個體數量和多少failure有在每個月。

以下是我有:

SELECT result, MONTH(time) MONTH, COUNT(*) COUNT 
FROM mytable 
WHERE YEAR(time)=2017 
GROUP BY MONTH(time); 

我正在尋找的是爲我提供了像有12次成功,並在某個月8次失敗的結果。

任何幫助,將不勝感激。

回答

0

使用條件聚集

SELECT result, MONTH(time) MONTH, 
     sum(result = 'success') as success_count, 
     sum(result = 'failure') as failure_count 
FROM mytable 
WHERE YEAR(time) = 2017 
GROUP BY result, MONTH(time); 
+0

那麼這很快,謝謝你,它似乎完美的工作!我會在時限允許的情況下接受答案! –

0

我會用下面的查詢:

SELECT, 
    DATE_FORMAT(time, '%m %Y') AS month_year, 
    SUM(CASE WHEN result = 'success' THEN 1 ELSE 0 END) AS success_count, 
    SUM(CASE WHEN result = 'failure' THEN 1 ELSE 0 END) AS failure_count 
FROM mytable 
WHERE YEAR(time) = 2017 
GROUP BY 
    DATE_FORMAT(time, '%m %Y') 

請注意,您應該按時間段單獨聚集,而不是由result,這反而是部分在CASE表達式中的總和。