2016-06-16 434 views
0

我有一個存儲一些數據和日期(例如yyyymmdd)和時間(例如hhmmss)的SQL表。 現在我需要選擇一天中每個小時的入場次數。可能使SQL查詢計算一天中的每個小時?

  • 條目的第一次計數將是:000000直到005959
  • 二將:010000直到015959

是否有可能有一個選擇使這個,然後有24個計數的數組結果如何?否則,我將需要創建24個選擇來獲取我想要的所有數據。

+0

MySQL或SQL服務器? – scaisEdge

+0

你到目前爲止做了什麼? – Alex

+0

這是您應該在查詢中使用計數表或數字表作爲主表的位置。 –

回答

1

按功能分組使用。另一種選擇是創建小時,分鐘和秒的字段。它會複製數據,但沒有問題。

CREATE TABLE test(id int, date varchar(8), time varchar(6)); 

INSERT INTO test VALUES(1,'20160616','015959'); 
INSERT INTO test VALUES(2,'20160616','015959'); 
INSERT INTO test VALUES(3,'20160616','025959'); 

    SELECT count(substr(time,1,2)), test.date 
    FROM test 
GROUP BY date, substr(time,1,2); 

輸出:

count(substr(time,1,2)), date 
'2', '20160616' 
'1', '20160616' 

如果你有TIME列,只需使用:

SELECT count(hour(time)), test.date 
    FROM test 
GROUP BY date, hour(time); 

如果您不需要通過date有這個數,從select只是刪除和group by條款。

0

我想你可以使用HOUR函數。我不使用MYSQL,但看起來它具有此功能。可能檢查它的語法。

SELECT HOUR(TheTimeField), COUNT(*) 
FROM TheTable 
GROUP BY HOUR(TheTimeField) 
ORDER BY HOUR(TheTimeField)