我需要计算满足特定条件的最大行序列。 例如:
time | value
10:00:01| 0
10:00:02| 0
10:00:03| 1
10:00:04| 0
10:00:05| 0
10:00:06| 0
10:00:07| 1
........| .....
我希望查询以0不间断返回最多出现次数0。 在上面的例子中,它将返回3.
有没有办法在sql中执行此操作? 感谢。
答案 0 :(得分:1)
您可以使用变量来枚举顺序值。然后使用order by
和limit
获取最大的序列号:
select t.*
from (select t.*,
(@rn := if(@v = value, @rn + 1,
if(@v := value, 1, 1)
)
) as seqnum
from table t cross join
(select @v := -1, @rn := 0) vars
order by time
) t
where value = 0
order by seqnum desc
limit 1;