leetcode 1285 找到连续区间的开始和结束数字(postgresql)

需求

表:Logs

±--------------±--------+

| Column Name | Type |

±--------------±--------+

| log_id | int |

±--------------±--------+

id 是上表的主键。

上表的每一行包含日志表中的一个 ID。

后来一些 ID 从 Logs 表中删除。编写一个 SQL 查询得到 Logs 表中的连续区间的开始数字和结束数字。

将查询表按照 start_id 排序。

查询结果格式如下面的例子。

示例 1:

输入:

Logs 表:

±-----------+

| log_id |

±-----------+

| 1 |

| 2 |

| 3 |

| 7 |

| 8 |

| 10 |

±-----------+

输出:

±-----------±-------------+

| start_id | end_id |

±-----------±-------------+

| 1 | 3 |

| 7 | 8 |

| 10 | 10 |

±-----------±-------------+

解释:

结果表应包含 Logs 表中的所有区间。

从 1 到 3 在表中。

从 4 到 6 不在表中。

从 7 到 8 在表中。

9 不在表中。

10 在表中。

输入

输出

sql 复制代码
with t1 as (
-- 使用row_number对所有数据进行排序
-- 将log_id减去排序的序号,得到相同的书,就是连续的一组
select log_id,
   Logs.log_id-(row_number() over (order by log_id)) as rn1
from logs
)
-- 根据上面相减得到的数据分组,去除组内最大和最小值
select min(log_id) as start_id,
       max(log_id) as end_id
from t1
group by rn1
order by start_id
;
相关推荐
计算机毕设VX:Fegn08951 分钟前
计算机毕业设计|基于springboot + vue小区人脸识别门禁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
@小码农15 分钟前
202512 电子学会 Scratch图形化编程等级考试三级真题(附答案)
服务器·开发语言·数据结构·数据库·算法
坚持学习前端日记28 分钟前
2025年的个人和学习年度总结以及未来期望
java·学习·程序人生·职场和发展·创业创新
烂漫心空1 小时前
Windows 系统如何使用 Mysql 服务
数据库·mysql
only-qi1 小时前
leetcode2. 两数相加
算法·leetcode
是Yu欸1 小时前
vLLM 0.11.0 新特性解析:视觉推理精度跃升与长序列性能革新
数据库·qwen·昇腾·npu·vllm
不屈的铝合金2 小时前
MySQL 数据库服务多实例部署指南
运维·数据库·mysql·多实例部署·维度隔离
杨云龙UP2 小时前
SQL Server定时自动备份配置:使用SSMS维护计划向导配置数据库每日自动备份_20260101
运维·服务器·数据库·sql·sqlserver·桌面
jjjxxxhhh1232 小时前
【项目】-添加辐射源点的接口
数据库
2401_841495642 小时前
【LeetCode刷题】寻找重复数
数据结构·python·算法·leetcode·链表·数组·重复数