SQL,力扣题目1285,找到连续区间的开始和结束数字【窗口函数】

一、力扣链接

LeetCode_1285

二、题目描述

表:Logs

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| log_id        | int     |
+---------------+---------+
id 是上表具有唯一值的列。
上表的每一行包含日志表中的一个 ID。

编写解决方案,得到 Logs 表中的连续区间的开始数字和结束数字。

返回结果表按照 start_id 排序。

三、目标拆解

四、建表语句

Create table If Not Exists Logs (log_id int)
Truncate table Logs
insert into Logs (log_id) values ('1')
insert into Logs (log_id) values ('2')
insert into Logs (log_id) values ('3')
insert into Logs (log_id) values ('7')
insert into Logs (log_id) values ('8')
insert into Logs (log_id) values ('10')

五、过程分析

1、窗口函数的连续问题,使用差值法

2、这里计算排名的最大值也可以使用窗口函数,不过order by 后面的字段为倒序

3、流程控制,排名最小的为起始值,排名最大的为结束值

六、代码实现

with t1 as(
selectlog_id,row_number() over(order by log_id) rn,log_id - row_number() over(order by log_id) diff    -- 不能减成结果为负数
from logs
)
#    select * from t1;
,t2 as(
select log_id, diff,row_number() over(partition by diff order by log_id) rn,count(1) over(partition by diff) totalfrom t1
)
#    select * from t2;
select max(if(rn = 1, log_id, null)) start_id,     -- 使用聚合函数就行max(if(rn = total, log_id, null)) end_id
from t2
group by diff, total
order by start_id;

七、结果验证

八、小结

1、CTE 表达式 + 排名函数 + 聚合函数 + if 条件判断

2、针对排名后数据,计算差值找到连续数字,根据差值分组给组内成员进行排名,根据差值和组内成员总数分组,排名最小的为起始值,排名最大的为结束值

3、聚合函数max() 计算时会忽略null 值

4、count(1) 用来计算总数,数据量大的情况下效率较高

5、连续区间求差值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/481.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-linux)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

访问控制技术原理与应用

目录 访问控制概述实现访问控制目标访问控制参考模型常见访问控制模型访问控制模型-DAC自主访问控制访问控制模型-MAC强制访问控制访问控制模型-RBAC基于角色的访问控制访问控制模型-ABAC基于属性的访问控制 访问控制概述 访问控制是对资源对象的访问授权控制的方法以及运行机…

分数阶傅里叶变换与信息熵怎么用于信号处理?

天马行空的理解与思考方式:分数阶傅里叶变换与信息熵怎么用于信号处理? ChiX-Y 快速学习,快速尝试,快速失败 已关注 35 人赞同了该文章 这篇文章希望能写的有趣,同时有质量,学习就是要多维度多角度&…

QT——TCP网络调试助手

目录 一.项目展示 ​编辑 二.开发流程 三.QTcpServer、QTcpSocket、QUdpSocket类的学习 1.QTcpServer服务端 2.QTcpSocket客户端 3.Udp通信 四.网络调试助手 1.首先我们实现当用户选择不同协议类型时不同的UI组件如何切换 2.实现打开/关闭按键图片的切换 方式一&…

怎么压缩pdf文件大小?关于压缩PDF文件大小的几种压缩方法

怎么压缩pdf文件大小?压缩PDF文件能够显著减小文件体积,从而节省硬盘和云存储空间,这对于管理大量文档尤其重要。较小的文件大小使得通过电子邮件或在线平台发送变得更加迅速,缩短了传输时间。同时,压缩后的文件更方便…

使用Scrapy框架爬取博客信息

随着网络的发展,越来越多有价值的信息存储在网络上。使用爬虫技术可以从这些信息源中提取出有用的数据。本文将介绍如何使用Python中的Scrapy框架来爬取博客站点上的文章标题、作者以及阅读数,并将其保存到JSON文件中。 一、项目背景 Scrapy是一个快速…

网络编程 UDP编程 Linux环境 C语言实现

UDP编程 1. 一般UDP编程 UDP传输特点:非面向连接、不可靠的、无序的 报式传输 支持组播和广播 UDP应用数据最大长度建议:MTU(以太网分组数据的最大长度)1500 - 20(IP头) - 8(UDP头) 1472Bytes 客户端:支持两种形式的代码编写: 1. 不定向…

使用linux+nginx 作为unity webgl的服务器

使用linuxnginx 作为unity webgl的服务器 建议使用命令行下载,使用源码编译可能编译不过。 自己创建一个uinty webgl项目,或者下载我上传的unity webgl项目 https://download.csdn.net/download/GoodCooking/24339451下载nginx 使用图形界面 下载ngi…

Flink CDC 同步 Mysql 数据

文章目录 一、Flink CDC、Flink、CDC各有啥关系1.1 概述1.2 和 jdbc Connectors 对比 二、使用2.1 Mysql 打开 bin-log 功能2.2 在 Mysql 中建库建表准备2.3 遇到的坑2.4 测试 三、番外 一、Flink CDC、Flink、CDC各有啥关系 Flink:流式计算框架,不包含 …

【模型学习之路】手写+分析bert

手写分析bert 目录 前言 架构 embeddings Bertmodel 预训练任务 MLM NSP Bert 后话 netron可视化 code2flow可视化 fine tuning 前言 Attention is all you need! 读本文前,建议至少看懂【模型学习之路】手写分析Transformer-CSDN博客。 毕竟Bert是tr…

C#实现隐藏和显示任务栏

实现步骤 为了能够控制Windows任务栏,我们需要利用Windows API提供的功能。具体来说,我们会使用到user32.dll中的两个函数:FindWindow和ShowWindow。这两个函数可以帮助我们找到任务栏窗口,并对其执行显示或隐藏的操作 引入命名空…

Excel菜单选项无法点击?两种原因及解决方法全解析

在使用Excel处理数据时,有时会遇到菜单选项无法点击的情况。这种问题会影响到正常的操作和编辑。出现这种情况的原因可能有多种,本文将介绍两种常见的原因,并提供相应的解决方法,帮助小伙伴们快速恢复菜单选项的正常使用。 原因一…

SpringBoot节奏:Web音乐网站构建手册

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

波尼音乐 2.3.0-b1 | 开源免费的音乐播放器,附两个公共接口

波尼音乐最初作为一个毕设项目,凭借其实现了本地与网络音乐播放的能力而受到许多用户的喜爱。随着百度在线音乐API的关闭,波尼音乐逐渐失去在线音乐播放功能。在开源社区的支持下,开发者发现新的网易云音乐API,重启项目并进行全面…

ComfyUI - ComfyUI 工作流中集成 SAM2 + GroundingDINO 处理图像与视频 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143359538 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 SAM2 与…

C++原创游戏宝强越狱第二季即将回归

抱歉,3个月以来我不是没时间更,而是懒得更。。。 这不宝强越狱第一季完结了么,所以我决定两个月内弄完宝强越狱第二季,第一个版本将在2025年1月1日发布。不过,我还做了个预告片BQYY预告片-CSDN直播(33s的垃…

mysql查表相关练习

作业要求: 单表练习: 1 . 查询出部门编号为 D2019060011 的所有员工 2 . 所有财务总监的姓名、编号和部门编号。 3 . 找出奖金高于工资的员工。 4 . 找出奖金高于工资 40% 的员工。 5 找出部门编号为 D2019090011 中所有财务总监,和…

【笔试题】迈入offer的新大门

1. 笔试题1 1.1 题目链接:[NOIP2010]数字统计_牛客题霸_牛客网 1.2 题目描述 补充: 1.3 解法 1.3.1 算法思路 定义变量,L,R,count用于记数。 对规定符合区域范围内的数据进行遍历,对每个数据的每一位进行判断是否为2&#xf…

Gitee push 文件

1、背景 想将自己的plecs仿真放到git中管理,以防丢失,以防乱改之后丢失之前版本仿真。此操作说明默认用户已下载git。 2、操作步骤 2.1 开启Git Bash 在文件夹中右键,开启Git Bash。 2.2 克隆文件 在Git Bash中打git clone git地址&#…

【AIGC】2024-arXiv-Lumiere:视频生成的时空扩散模型

2024-arXiv-Lumiere: A Space-Time Diffusion Model for Video Generation Lumiere:视频生成的时空扩散模型摘要1. 引言2. 相关工作3. Lumiere3.1 时空 U-Net (STUnet)3.2 空间超分辨率的多重扩散 4. 应用4.1 风格化生成4.2 条件生成 5. 评估和比较5.1 定性评估5.2 …