当前位置: 首页 > news >正文

MySQL基础练习题48-连续出现的数字

目录

题目

准备数据

 分析数据


题目

找出所有至少连续出现三次的数字。

准备数据

## 创建库
create database db;
use db;## 创建表
Create table If Not Exists Logs (id int, num int)## 向表中插入数据
Truncate table Logs
insert into Logs (id, num) values ('1', '1')
insert into Logs (id, num) values ('2', '1')
insert into Logs (id, num) values ('3', '1')
insert into Logs (id, num) values ('4', '2')
insert into Logs (id, num) values ('5', '1')
insert into Logs (id, num) values ('6', '2')
insert into Logs (id, num) values ('7', '2')

 分析数据

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

遇见连续性问题,需要两列差值相同的,最后进行相减,相同的即为连续。

第一步:根据num分组,id排序进行排名

select *,row_number() over (partition by num order by id) rn
from logs;

第二步:算差值,将id列减去rn列的值

with t1 as (select *,row_number() over (partition by num order by id) rnfrom logs
) select *,(id - cast(rn as signed)) as diff
from t1;

注意:rn列需要强制性转化

with t2 as (with t1 as (select *,row_number() over (partition by num order by id) rnfrom logs) select *,(id - cast(rn as signed)) as difffrom t1
) selectdistinct t2.num as ConsecutiveNums
from t2
group by t2.num,t2.diff
having count(t2.diff) >= 3;

 

http://www.lryc.cn/news/429356.html

相关文章:

  • webrtc学习笔记2
  • Simple RPC - 06 从零开始设计一个服务端(上)_注册中心的实现
  • 【深度学习】基于Transformers的大模型推理框架
  • 电脑监控怎样看回放视频?一键解锁电脑监控回放,守护安全不留死角!高效员工电脑监控,回放视频随时查!
  • 【一起学Rust | 框架篇 | Tauri2.0框架】tauri中rust和前端的相互调用(rust调用前端)
  • deque容器
  • Redis远程字典服务器(9)—— 类型补充
  • VMware虚拟机nat无法联通主机
  • 「字符串」详解AC自动机并实现对应的功能 / 手撕数据结构(C++)
  • freecad遭遇网络不同无法安装插件Addon Manager: Unexpected 0 response from server
  • Ruby模板引擎:构建动态视图的艺术
  • HarmonyOS NEXT星河版零基础入门(3)
  • 第二十讲 python中的异常结构-try except-else-finally
  • springer 投稿系统中返修注意点
  • CSS:display和visiblity
  • 43.x86游戏实战-XXX寻找吸怪坐标
  • Redis地理位置相关应用
  • 优化WAN流量:如何通过调整系统设置降低企业网络成本
  • Java-HttpHeaders请求头或响应头
  • Elasticsearch高阶查询
  • 【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)
  • 通过https方式访问内网IP
  • flutter 键盘弹出 都会重新Build
  • RedisDistributedLock 分布式锁
  • Java之包装类
  • Linux - 权限
  • 免费图形化nginx管理工具nginxWebUI
  • 编程上的挫折不可怕,可怕的是你畏惧了
  • docker逃逸手法
  • 3 pytest Fixture