Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题180连续出现的数字
前文
本文为leetcode数据库类型题目,题目序号为180,主要考察对于查询知识的应用,题目链接为https://leetcode-cn.com/problems/consecutive-numbers/。
题目信息
表:Logs
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | num | varchar | +-------------+---------+ id 是这个表的主键。
编写一个 SQL 查询,查找所有至少连续出现三次的数字。
返回的结果表中的数据可以按 任意顺序 排列。
查询结果格式如下面的例子所示:
解题思路
根据题目信息可知,现在在数据库表中有一组数据,想要查询其中连续出现至少三次的数字。显然,如何得到连续出现的数字便成了解决该题目的关键。本文中采用另一种思路的解法,也就是利用inner join关键字进行表格的组装。将已知表进行两次组装,组装时的条件设置为id差值为1同时num值相等。按此方式即可查询出所有三连的相同数字。但还有一种情况我们没考虑到,就是这个数字反复出现或者这个数字是4连或以上。由于我们只需要数字本身,因此增加distinct关键字进行重复数字过滤。至此,该题目解答完毕。主要考察对于关联表的应用。
解题答案
select distinct l1.num ConsecutiveNums from Logs l1 inner join Logs l2 on l2.id-l1.id = 1 and l1.Num = l2.Num inner join Logs l3 on l3.id-l2.id = 1 and l2.Num = l3.Num
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。