Code Bye

解决相邻数据时间点相减的问题

        tim                sts
9-29  6:00             1                  开机
9-29  9:00             0                  关机
9-29  14:30           1                  开机
9-29  18:30           0                  关机
时间由每天产线的具体开关机时间确定
sts的1表示开机,0表示停机,要计算一天中的总运行时间(开机–关机两个时间点相减)和停机时间
这个应该怎么样查询,想不通逻辑。
解决方案

15

select tim,(select tim from table1 where sts=1 and tim<t.tim order by tim desc limit 1)
from table1 t
where sts=0

5

SQL很重要,SQL不是全部。
最重要的是架构,假如你的表是这样的。
XX产线  开机时间 关机时间,那么你的问题是不是就简单了。
而对于这样的结构,需要做的是,开机时,增加一条记录,填充开机时间,
这个和现在完全一样,关机时,现在是增加一条记录,填充时间(关机时间),
修改后变成取最后一条(逆序,取第一条),填充关机时间,需要修改的地方
是不是很简单。而查询时的SQL就变得超级简单了。
=============
问题的关键不仅仅是查询的SQL,从理论上说,记录必然是开机,关机,开机,关机。
可实际上肯定会有丢失开机或关机记录的情况,这样在记录开机/关机数据时,
必须有相应的判断和异常处理。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明解决相邻数据时间点相减的问题