mysql在线时长统计
 2019-04-09 19:12:14   260   4   

本文最后更新于天前,文中介绍内容及环境可能已不适用.请谨慎参考.

今天遇到个设备在线时长的统计问题。
基础数据表记录了设备的开关时间,需要统计设备全部的在线时长。
与普通的问题略有不同,稍有折腾,记录如下.
 
原始数据表:开关日志。 data区分1为开,0为关,分别记录时间。
 
 
求各个设备的全部在线时长总计。
需要计算出对应设备打开后的关闭时间
即设备打开后,状态为0,并且时间>开始时间的最小记录。
select t1. name,
    TIMESTAMPDIFF(SECOND, t1.opt_time, t2.opt_time) as RESULT,
t1.device_id,t1.opt_time start,t2.opt_time end
from 
    (select * from iot_device_status_log where opt_time like CONCAT('2018-05-08','%') and (data=1 or data=0)
-- and device_id='b4abe97c1ad64631adda73f856793363' 
) t1,
    (select * from iot_device_status_log where opt_time like concat('2018-05-08','%') and (data=1 or data=0)
-- and device_id='b4abe97c1ad64631adda73f856793363' 
)t2 
where 
    t1.device_id=t2.device_id and 
    t1.data=1 and 
    t2.data=0 and 
    t1.opt_time < t2.opt_time and
    t2.opt_time=(select min(opt_time) from iot_device_status_log where device_id=t1.device_id and data=0 and opt_time>t1.opt_time)
order by t1.device_id ,t1.opt_time asc

 

结果~

 2019-04-09 19:22:30 
 0

  本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵 固定链接: 【mysql在线时长统计】 转载请注明



发表新的评论
{{s_uid}}   , 欢迎回来.
您的称呼(*必填):
您的邮箱地址(*必填,您的邮箱地址不会公开,仅作为有回复后的消息通知手段):
您的站点地址(选填):
留言:

∑( ° △ °|||)︴

(๑•̀ㅂ•́)و✧
<( ̄) ̄)>
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
╮( ̄▽ ̄)╭
( ̄ε(# ̄)
(⊙ˍ⊙)
( ̄▽ ̄)~*
∑( ° △ °|||)︴

文章分类

可能喜欢 

KxのBook@Copyright 2017- All Rights Reserved
Designed and themed by 野生的喵喵   1623132   44960