连续出现的数字

连续出现的数字.png

题目中求连续出现三次的数字,不容易想到的如果用sql语句限制连续,因为sql语句不是普通的编程语言,它面向集合。

自己根据题目的案例毫不犹豫的写出了下面的语句,果不其然提示出错。

 SELECT t1.Num ConsecutiveNums FROM Logs t1 LEFT JOIN Logs t2 ON t1.Id <= t2.Id and t1.Num = t2.Num  GROUP BY t1.id
 HAVING (MIN(t2.Id) - t1.id) >=2

仔细想想想了想,显然是错的,因为没有突出连续3次。后来先考虑连续两次怎么写,很简单。中间用的inner join,能够出现在结果集里面的一定是符合连续两次条件的。

SELECT DISTINCT t1.Num ConsecutiveNums FROM Logs t1 
JOIN Logs t2 ON t1.id +1 = t2.id AND t1.Num = t2.Num 

再次基础上扩充了下,得到下面的答案:

SELECT DISTINCT t1.Num ConsecutiveNums FROM Logs t1 
JOIN Logs t2 ON t1.id +1 = t2.id AND t1.Num = t2.Num 
JOIN Logs t3 ON t3.id = t2.id+1 AND t3.Num = t2.Num
GROUP BY t1.id 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode数据库题目 题目 编写一个 SQL 查询,查找所有至少连续出现三次的数字。 例如,给定上面的 Lo...
    Shenjiming阅读 893评论 0 1
  • 题目描述 编写一个 SQL 查询,查找所有至少连续出现三次的数字。 分析 通过子查询来实现。子查询通过变量构造。子...
    莫小鹏阅读 168评论 0 0
  • SQL架构 查看记录 要求:编写一个 SQL 查询,查找所有至少连续出现三次的数字。例如,给定上面的 Logs 表...
    Taodede阅读 365评论 0 0
  • 编写一个 SQL 查询,查找所有至少连续出现三次的数字。 例如,给定上面的 Logs 表, 1 是唯一连续出现至少...
    Marstin阅读 1,056评论 0 0
  • 长沙的天气还是昏昏沉沉的 像现在因为没睡午觉不太清醒的我 昨晚一个很久没有联系过的男生联系了我 经管只是条广告 这...
    Suzzie阅读 150评论 0 0