【问题标题】:MYSQL: Number of devices pr. hour in 10 min resolutionMYSQL:每台设备的数量。 10 分钟分辨率的小时
【发布时间】:2016-06-30 13:45:49
【问题描述】:

我有一个数据库,其中有一个 mac 和一个 timestamp,可以在其中观察到设备。 我想计算我有多少个设备。小时,分辨率为 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 语句进行比较,我只计算 1 小时的时间间隔,这会给出错误的结果。

我想计算 pr 有多少不同的设备。小时分辨率为 10 分钟当量: 在时间间隔 12:00:00 - 13:00:00 中计算不同的 mac 下一个时间间隔应该是 12:10:00 - 13:10 等等...

我正在使用 MYSQL 数据库。

【问题讨论】:

  • 选择列表中的FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP(time)/(60*10))*60*10) 是否返回您期望的结果?
  • 我给了我 10 分钟的时间组。但我没有得到正确的设备数量。

标签: mysql sql database


【解决方案1】:

我不认为 ROUND 是应该在这里使用的正确函数。 DIV 更合适。 这会工作

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

【讨论】:

  • 我认为你有一个关于使用 DIV 的好点。至少它保存了 ROUND 函数。但是,在您的 sql 建议中,它选择了 10 分钟而不是 1 小时的不同 mac 的计数。抱歉,如果问题不清楚。我想计算有多少不同的设备公关。以 10 分钟 eq 为分辨率的小时:在 12:00:00 - 13:00:00 的时间间隔内计算不同的 mac,下一个间隔应该是 12:10:00 - 13:10 等等
猜你喜欢
  • 2011-09-05
  • 1970-01-01
  • 2015-07-26
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多