请问如何用sql语句获取多个间断时间的时间总和

就比如说像是客服那样,时间数据格式为 ‘20210722094622’ 这样的类型,0表示在线,1表示离线。一天可能有多个0和1,但是一般来说都是0,1,0,1这样交替出现的,我现在想知道的就是,如何用sql语句来将在线和离线的差值汇总成一个总的在线时长,如果有其他方法也可以和我说一下思路。

img

使用group by

select 时间,count(*) 数量 from 表名 group by f_on_line

如果你的确定是0101交替出现,那就很简单,让你这个f_last_time-初始时间得出每一项的时间差,在线为正数,离线为负数,然后sum出结果,记得要保证最后一条是在线记录,如果最后一条是离线记录,需要把它排除掉,祝你成功