MySQL计算最长的运行长度
我正在使用MySQL/Maria数据库,并正在连接两个MyISAM表。我返回的数据集如下所示MySQL计算最长的运行长度,mysql,sql,mariadb,window-functions,gaps-and-islands,Mysql,Sql,Mariadb,Window Functions,Gaps And Islands,我正在使用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
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查询实现。我可能要处理几百万条记录,因此我试图避免循环遍历所有这些记录。这是一个缺口和孤岛问题,您需要最大孤岛的长度 您可以使用窗口功能:
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
这可能会有帮助