SQL复杂查询:连续次数、

180.连续出现的数字

查找表:Logs中连续出现3次以上的数字
图片说明

编写一个 SQL 查询,查找所有至少连续出现三次的数字。

返回的结果表中的数据可以按 任意顺序 排列
示例:
示例

连续性问题:

1. 找到连续的特点(e.g. 行号 - 分组行号 = k)
2. 根据值和特点进行Group By
3. Having筛选连续次数
4. 做出指定输出(e.g. 输出连续3次出现的数字,输出用户连续登录3天以上连续的次数、用户数……)
注意一:Id-rownum的值是一致,数字不一定连续
注意二:Id-rownum不恒大于0,如果是负数,我们将会得到bigint unsigned的错误提示

连续性模板:

SELECT DISTINCT Num ConsecutiveNums
FROM(
SELECT *,
      ROW_NUMBER() OVER (PARTITION BY Num ORDER BY Id) rownum, //行数
      ROW_NUMBER() OVER (ORDER BY Id) id2 //新行号
FROM LOGS
) t
GROUP BY (id2-rownum),Num //按照行号-分组行号 & 数字 进行分组 
HAVING COUNT(*)>=3
全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务