我正在使用一个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查询来实现。我可能要处理几百万条记录,所以我尽量避免遍历所有这些记录。
发布于 2020-10-01 23:15:42
这是一个缝隙和岛屿的问题,你想要最大岛屿的长度。
您可以使用窗口函数:
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 1https://stackoverflow.com/questions/64157388
复制相似问题