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表示停机,要计算一天中的总运行时间(开机–关机两个时间点相减)和停机时间
这个应该怎么样查询,想不通逻辑。
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,从理论上说,记录必然是开机,关机,开机,关机。
可实际上肯定会有丢失开机或关机记录的情况,这样在记录开机/关机数据时,
必须有相应的判断和异常处理。
最重要的是架构,假如你的表是这样的。
XX产线 开机时间 关机时间,那么你的问题是不是就简单了。
而对于这样的结构,需要做的是,开机时,增加一条记录,填充开机时间,
这个和现在完全一样,关机时,现在是增加一条记录,填充时间(关机时间),
修改后变成取最后一条(逆序,取第一条),填充关机时间,需要修改的地方
是不是很简单。而查询时的SQL就变得超级简单了。
=============
问题的关键不仅仅是查询的SQL,从理论上说,记录必然是开机,关机,开机,关机。
可实际上肯定会有丢失开机或关机记录的情况,这样在记录开机/关机数据时,
必须有相应的判断和异常处理。