2016-06-30 49 views
0

我有一個數據庫與mac時間戳觀察設備。 我想計算我有多少個設備。小時分辨率爲10分鐘。MYSQL:設備數量。小時在10分鐘的分辨率

我曾嘗試用:

SELECT 
FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP(`time`)/(60*10))*60*10) AS `time` 
,COUNT(DISTINCT data.`mac`) AS `count` 
FROM data 
GROUP BY FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP(`time`)/(60*10))*10*60); 

這給了錯誤的結果,如果我把它比作一個手動SELECT語句,其中i計數只需1個小時的時間間隔。

我想計算有多少不同的設備公關。小時分辨率爲10分鐘eq: 計時時間間隔不同的mac在12:00:00 - 13:00:00 下一個時間間隔應該是12:10:00 - 13:10依此類推...

我正在使用MYSQL數據庫。

+2

的可能的複製[組MySQL查詢通過15周分鐘的時間間隔(http://stackoverflow.com/questions/2793994/group-mysql-query-by-15-min-intervals) – Alex

+0

選擇列表中的FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP('time')/(60 * 10))* 60 * 10)'是否會返回所期望的內容? – jarlh

+0

我給了我10分鐘的時間組。但是我沒有得到正確的設備數量。 –

回答

0

我不認爲ROUND是正確的功能應該在這裏使用。 DIV更合適。 這會工作

SELECT UNIX_TIMESTAMP(time) DIV (10 * 60) AS time 
,COUNT(DISTINCT data.`mac`) AS `count` 
FROM  data 
GROUP BY time; 
+0

我認爲你有一個關於使用DIV的好處。至少它可以節省ROUND功能。 但是在你的sql建議中,它選擇了10分鐘而不是1小時的不同mac的數量。 對不起,如果問題不清楚。我想計算有多少個不同的設備。小時分辨率爲10分鐘eq: 在時間間隔12:00:00 - 13:00:00計數不同的mac,下一個時間間隔應爲12:10:00 - 13:10等等 –