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在线时长统计】 转载请注明
相关文章:
发表新的评论
文章分类
文章归档
标签
deb ,
,
蓝屏 ,
select ,
html5 ,
tomcat ,
gcc ,
ajax ,
apt-get update ,
选择 ,
js加密 ,
java ,
工作 ,
ocr ,
AngularJs ,
感慨 ,
work ,
click ,
javascript ,
反向代理 ,
ip查询 ,
空间查询 ,
word ,
ECS服务器 ,
centos ,
杂 ,
StartupWMClass ,
前端 ,
js ,
vmdk ,
感概 ,
select2 ,
virtualbox ,
gg代理 ,
share ,
seo ,
风筝 ,
email ,
ASR ,
转换 ,
cool ,
activiti-ui ,
喵小凡 ,
@PropertySource ,
ckeiditor ,
网站攻击 ,
SRILM ,
风景 ,
plugin ,
vdi ,
扩容 ,
chorme ,
阿里云 ,
KALDI ,
num ,
packer2 ,
pic ,
gg镜像 ,
win8.1 ,
ecs ,
mysql ,
Ubuntu ,
快递查询 ,
nginx ,
ubuntu ,
swap ,
maven ,
entropy_avail ,
tencent ,
语音识别 ,
prerender ,
xfce4 ,
进度条 ,
存储过程 ,
activiti ,
熵 ,
日出 ,
练笔 ,
虞美人 ,
nodejs ,
词 ,
demo ,
jquery ,
random ,
linux ,
cat ,
bootstrapValidator ,
angularJs ,
live ,
on ,
gg ,
雪 ,
婚姻 ,
景色 ,
@Autowired ,
pdf ,
emqttd ,
优化 ,
thchs30 ,
opencv ,