2016-06-30 50 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等等 –