Leetcode — mysql 专题 — 180题:连续出现的数字(中等)
前言
最近想把之前在leetcode练习的mysql专题梳理一遍,该系列主要是个人的学习总结,以方便之后个人时不时可以来翻阅复习。
(若有侵权,请联系我,会立即删除文章)
一、问题描述
难度中等180题:连续出现的数字
二、代码实现
1.代码思路
连续出现的数字,关键在解决“连续”
通过行排序和各数字分组排序作差,当同一数字连续出现,则差是相同,如下:
2.代码实现
select distinct Num ConsecutiveNums
from
(select l.*,
(row_number() over(order by Id))-(row_number() over(partition by Num order by Id)) idrn
from Logs l)l1
group by Num,idrn
having count(*)>=3
总结
1.row_number() 全部数据排序和各数字组内排序。
2.用上distinct,因为可能有数字多次连续出现3次以上。