如何计算满足特定条件的行的最大出现次数

时间:2015-02-17 14:19:30

标签: mysql sql

我需要计算满足特定条件的最大行序列。 例如:

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中执行此操作? 感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用变量来枚举顺序值。然后使用order bylimit获取最大的序列号:

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;