sql查找至少连续出现三次的数字

表:logss

sql 复制代码
+-------------+---------+
| column name | type    |
+-------------+---------+
| id          | int     |
| num         | varchar |
+-------------+---------+

id 是这个表的主键。

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

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

查询结果格式如下面的例子所示:

logss 表:

sql 复制代码
+----+-----+
| id | num |
+----+-----+
| 1  | 1   |
| 2  | 1   |
| 3  | 1   |
| 4  | 2   |
| 5  | 1   |
| 6  | 2   |
| 7  | 2   |
+----+-----+

result 表:

sql 复制代码
+-----------------+
| consecutivenums |
+-----------------+
| 1               |
+-----------------+

1 是唯一连续出现至少三次的数字。

连续出现的意味着相同数字的 id 是连着的,由于这题问的是至少连续出现 3 次,我们使用 logs 并检查是否有 3 个连续的相同数字。

sql 复制代码
select *
from
    logss l1,
    logss l2,
    logss l3
where
    l1.id = l2.id - 1
    and l2.id = l3.id - 1
    and l1.num = l2.num
    and l2.num = l3.num
;
sql 复制代码
id      num     id      num     id      num
1       1       2       1       3       1

注意:前两列来自 l1 ,接下来两列来自 l2 ,最后两列来自 l3 。

然后我们从上表中选择任意的 num 获得想要 的答案。同时我们需要添加关键字 distinct ,因为如果一个数字连续出现超过 3 次,会返回重复元素。

mysql

sql 复制代码
select distinct
    l1.num as consecutivenums
from
    logss l1,
    logss l2,
    logss l3
where
    l1.id = l2.id - 1
    and l2.id = l3.id - 1
    and l1.num = l2.num
    and l2.num = l3.num
;
相关推荐
极限实验室10 分钟前
代理 Elasticsearch 服务:INFINI Gateway VS Nginx
数据库·搜索引擎
三月七(爱看动漫的程序员)31 分钟前
LLM面试题六
数据库·人工智能·gpt·语言模型·自然语言处理·llama·milvus
追光天使1 小时前
Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?
数据库·mysql·macos
高铭杰1 小时前
Citus源码(2)分布式读流程分析与基础概念梳理(shardid、placementid、groupid)
数据库·分布式·postgresql·citus
_GR2 小时前
rdiff-backup备份
数据库
Hi_Lyn4 小时前
MySQL表的增删改查基础版
数据库·mysql
Feng.Lee4 小时前
如何判断数据来源缓存还是数据库
数据库·缓存
随缘而动,随遇而安5 小时前
第四十篇 企业级数据仓库建模深度实践:从理论到落地的维度建模全攻略
大数据·数据库·数据仓库·数据分析·数据库架构
快来卷java6 小时前
MySQL篇(四)事务相关知识详解
java·数据库·mysql·链表
꧁坚持很酷꧂6 小时前
Qt实现鼠标右键弹出弹窗退出
数据库·qt·计算机外设