看你描述,流水表里应该是有车牌找个字段的,
对于一个车牌,记录中必然存在 进场、出场(如果未出场,只有一条机场记录,先不统计)这样就可以将整个大表拆成两个临时表:
select 车牌, 时间 from table where flag=‘进场’ A
select 车牌, 时间 from table where flag=‘出场’ B接下来处理的方法就很多了,我给出以下两种方法:
1、根据车牌分组、时间排序 ,给临时表增加rownum (seq),mysql的的rownumber参考
set @x=0
set @y=0
select if(@y=车牌,@x:=@x+1,@x:=1) as rownum, as rownum, 车牌,时间 ,@y:= 车牌
 from tbl
order by col;
 
然后根据 A 关联 B ,关联条件:A.车牌=B.车牌 ,rownum 相等,得出:B.时间-A.时间统计SUM(B.时间-A.时间),AVG(B.时间-A.时间)2、不使用变量:
直接A关联B,算法的思想主要是(进场、离场、进场、离场……时间纪录是不重合区间)
以下是伪码:select A.车牌,A.时间 进场时间,MIN(B.时间) 离场时间
from A
left join B(left join 是为了保留还未出场的纪录)
on A.车牌=B.车牌
and A.时间<=B.时间
group by A.车牌,A.时间去 离场-进场 再汇总计算,得结果如果还需要细节,给我分后,在联系我!