【SQL刷题系列】:leetcode180 Consecutive Numbers

SQL刷题系列:SQL作为一种数据库查询和程序设计语言,是从事数据技术人员必备的技能,也是各大公司的数据分析、数据挖掘、数据库等笔试题必考的一种题。所以,不论大家是转行还是学习都少不了这一关。为此,Python数据科学开启了SQL刷题的系列,希望可以帮助有需要的朋友们。 题目来源:本篇内容为Leetcode上SQL题库180 难易程度:中等

▌刷题回顾

【SQL刷题系列】:leetcode178 Rank Scores

【SQL刷题系列】:leetcode183 Customers Who Never Order

▌题目描述

Write a SQL query to find all numbers that appear at least three times consecutively.

写一段SQL查询语句,找到所有出现至少连续三次的数字。

+----+-----+
| Id | Num |
+----+-----+
| 1  |  1  |
| 2  |  1  |
| 3  |  1  |
| 4  |  2  |
| 5  |  1  |
| 6  |  2  |
| 7  |  2  |
+----+-----+

For example, given the above Logs table, 1 is the only number that appears consecutively for at least three times.

例如,给定上面的logs表,其中 “1” 是唯一一个出现至少连续三次的数字。

+-----------------+
| ConsecutiveNums |
+-----------------+
| 1               |
+-----------------+

▌参考答案

参考1:

select distinct (l1.Num) as ConsecutiveNums 
from Logs l1
left join Logs l2 on l1.Id = l2.Id - 1
left join Logs l3 on l1.Id = l3.Id - 2
where l1.Num = l2.Num and l2.Num = l3.Num;

参考2:

Select distinct(l1.num) as consecutivenums 
from Logs l1, Logs l2, Logs l3 
where l1.num = l2.num and l2.num = l3.num and 
l2.id = l1.id+1 and l3.id = l2.id+1;

▌答案解析

参考1:创建将3个自连接表,并通过减法把3个表中3个连续id连接起来。最后使用where条件限制3个连续id对应的num值相等。

参考2:其实和参考1是一个思路,不同的地方是自连接是完全按照原有id来连接的,没有错位,而错位的地方在where的限制条件中:3个id的大小顺序用加法实现。

原文发布于微信公众号 - Python数据科学(Python_Spiderman)

原文发表时间:2018-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

美团后台三面面经

世界上最美妙的莫过于此,在不谙世事的年纪,对生活的全部期待就是绚烂的理想本身。——赫恩曼尼

30440
来自专栏牛客网

秋招时间规划,知识点汇总,以及面试总结一、知识储备二、面试问题三、心态变化四、总结

秋招已结束,作为一个平时潜水的牛友,很感激牛客网和广大牛友们。在我无知时,给与我知识;在我烦恼时,给与我慰藉;现在自己也拿到了心仪的offer,就简单写写这段时...

415110
来自专栏拂晓风起

关于0xFFFFFFFF和alpha,温故而知新

10950
来自专栏企鹅号快讯

编程语言简史:有人不喜欢花括号,于是他发明了 Python

编程语言有上千种,但是流行的不过10来种,那些我们经常使用的编程语言都是谁在什么时候创造出来的呢?Casper Beyer为我们进行了整理。 ? 1800年 J...

26970
来自专栏牛客网

北京蚂蚁三四面

三面: spring AOP原理,用了什么设计模式 一致性哈希原理 问我用过机器学习没(讲了下本科做过的一个ocr,然后问我以图搜图怎么做) 项目里行为特征树怎...

34190
来自专栏章鱼的慢慢技术路

美团点评2018校园春季招聘后台开发工程师笔试经验

17140
来自专栏闻道于事

C语言课程设计(成绩管理系统)

C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 1 #inclu...

87750
来自专栏北京马哥教育

MySQL入门书籍和方法分享

1、SQL入门 在准备成为MySQL DBA之前,能熟练的编写SQL是一个必要条件。exists 和 join之间的等价转换;基本的行列转换;SQL 循环等的熟...

377100
来自专栏牛客网

招银网络科技+软件测试工程师(杭州)+成都站面试

2017.9.14  15:30 电面 1.自我介绍 2.列举排序算法。简单说明哪些场景试用哪些排序算法 3.重载和重写的区别 4.堆和栈的区别 5.访问网站时...

83570
来自专栏数据科学与人工智能

【SQL技能】浅谈数据分析中的SQL

很久没写东西了,正好群里有童鞋最近要换工作,提到有关数据库方面的问题,个人认为,做数据分析的并没有必要把数据库开发之类的弄懂,你只需要从相应的数据库中调用你需...

36950

扫码关注云+社区

领取腾讯云代金券