2013-10-22 91 views
0

我有一張表格,其中包含以下列和示例數據。基於值的多次計數MYSQL

(此數據是查詢的輸出,所以我必須使用該查詢在FROM()語句)

Type| Time    | Count 
-------------------------------- 
1 |2013-05-09 12:00:00 | 71 
2 |2013-05-09 12:00:00 | 48 
3 |2013-05-09 12:00:00 | 10 
3 |2013-05-09 13:00:00 | 4 
2 |2013-05-16 13:00:00 | 30 
1 |2013-05-16 13:00:00 | 31 
1 |2013-05-16 14:00:00 | 4 
3 |2013-05-16 14:00:00 | 5 

我需要基於時間組數據使得我的輸出應該是這樣的

AlarmType1 | AlarmType2 |AlarmType3| AlarmTime 
-------------------------------- 
71   | 48   | 10  | 2013-05-09 12:00:00 
31   | 30   | 4  | 2013-05-09 13:00:00 
4   | 0   | 5  | 2013-05-09 14:00:00 

我已經嘗試此查詢

SELECT 
SUM(IF (AlarmType = '1',1,0)) as AlarmType1, 
SUM(IF (AlarmType = '2',1,0)) as AlarmType2, 
SUM(IF (AlarmType = '3',1,0)) as AlarmType3, 
AlarmHour 
FROM 'Table1' 
GROUP BY Time 

但這並沒有工作,因爲我在我的查詢失蹤計數,必須調整計數我的查詢

+0

我發現,我沒有使用我的計算我的查詢中一個錯誤。但有沒有辦法這樣做? –

回答

1

你需要SUM(計數),而不是SUM(1):

SELECT 
SUM(IF (AlarmType = '1',Count,0)) as AlarmType1, 
SUM(IF (AlarmType = '2',Count,0)) as AlarmType2, 
SUM(IF (AlarmType = '3',Count,0)) as AlarmType3, 
AlarmHour 
FROM 'Table1' 
GROUP BY Time 
+0

是的,伯爵失蹤和調整,這工作。我很喜歡mysql。 –

0

您的table1是您的子查詢權利?那麼它必須有它的別名所以這將是類似的東西

SELECT 
SUM(IF (AlarmType = '1',1,0)) as AlarmType1, 
SUM(IF (AlarmType = '2',1,0)) as AlarmType2, 
SUM(IF (AlarmType = '3',1,0)) as AlarmType3, 
AlarmHour 
FROM (subquery giving table1) as subTable 
GROUP BY subtable.Time 

編輯: 至於總結,你爲什麼不只是使用多個group by?例如。 GROUP BY Type, Time並顯示每個組的類型和類型SELECT Type,Time,Sum(Count) ...

好吧我現在明白你想達到什麼目的。如果你想「添加列」,你將不得不使用JOINS。因此,爲您需要的每個列(每個AlarmType計數)創建單個查詢,然後將其加入報警時間的總計值。

+0

我昨天試過這種方法,這隻顯示如果某個特定日期的ID存在或不存在,我的意思是隻有1和0,而不是鬧鐘的計數,我想我沒有用我的計數在我的查詢中,所以不得不在查詢中調整計數 –

+0

我沒有分析你的查詢,只是回答瞭如何處理你報告的錯誤。 – Antoniossss

+0

是的你是對的,應該編輯的問題 –

0
SELECT SUM(IF (AlarmType = '1',1,0)) as AlarmType1, 
SUM(IF (AlarmType = '2',1,0)) as AlarmType2, 
SUM(IF (AlarmType = '3',1,0)) as AlarmType3, 
AlarmHour 
FROM (your query) as t group by t.Time