MySQL计算最长运行长度
Posted
技术标签:
【中文标题】MySQL计算最长运行长度【英文标题】:MySQL count the longest run length 【发布时间】:2020-10-01 14:23:26 【问题描述】:我正在使用 mysql / Maria 数据库并加入两个 MyISAM 表。我正在返回一个如下所示的数据集
ID Value1 Value2
1 xxx xxx
2 xxx xxx
3 xxx xxx
8 xxx xxx
9 xxx xxx
10 xxx xxx
11 xxx xxx
18 xxx xxx
19 xxx xxx
20 xxx xxx
我想知道是否有一种方法可以返回最长连续序列的计数。澄清一下 1,2,3 的运行长度为 3,8-11 的运行长度为 4,18-20 的运行长度为 3。
所以我要返回的只是“4”的值
我正在从 python 脚本运行查询,并且可以通过 python 轻松找出它,但我希望有一种方法可以通过 sql 查询来完成。我可能会处理几百万条记录,因此我试图避免遍历所有这些记录。
【问题讨论】:
这可能对***.com/questions/4340793/…有帮助 【参考方案1】:这是一个间隙和岛屿问题,您需要最大岛屿的长度。
你可以使用窗口函数:
select count(*) cnt, min(id) start_id, max(id) end_id
from (select id, row_number() over(order by id) rn from mytable t) t
group by id - rn
order by count(*) desc
limit 1
【讨论】:
以上是关于MySQL计算最长运行长度的主要内容,如果未能解决你的问题,请参考以下文章