力扣【SQL连续问题】

180. 连续出现的数字


sql 复制代码
SELECT DISTINCT if(a.num = b.num AND b.num = c.num,a.num,null) AS ConsecutiveNums
FROM Logs a
LEFT OUTER JOIN Logs b
ON a.id+1 = b.id
LEFT OUTER JOIN Logs c
ON a.id+2 = c.id
WHERE if(a.num = b.num AND b.num = c.num,a.num,null) IS NOT NULL

603. 连续空余座位


sql 复制代码
SELECT a.seat_id AS seat_id
FROM Cinema a
LEFT OUTER JOIN Cinema b
ON a.seat_id + 1 = b.seat_id
LEFT OUTER JOIN Cinema c
ON a.seat_id - 1 = c.seat_id
WHERE a.free = 1 AND (b.free = 1 OR c.free = 1) 
ORDER BY seat_id
sql 复制代码
-- 执行速度慢
SELECT DISTINCT a.seat_id AS seat_id
FROM Cinema a
LEFT OUTER JOIN Cinema b
ON ABS(a.seat_id - b.seat_id) = 1
WHERE a.free = 1 AND b.free = 1
ORDER BY seat_id

613. 直线上的最近距离


sql 复制代码
-- 方法一:
SELECT MIN(ABS(a.x - b.x)) AS shortest
FROM Point a
LEFT OUTER JOIN Point b
ON a.x <> b.x
sql 复制代码
-- 方法二:
select  x - lag(x) over(order by x) as shortest
  from point
 order by shortest
 limit 1
 offset 1
sql 复制代码
-- 方法二中的中间输出 
select  x, 
 		lag(x) over(order by x) AS lag_x,    -- 取比每个 x 小的值中,但又最靠近x(数值上最大的)的那一个值 
  		x - lag(x) over(order by x) as shortest  -- 计算每个 x 与其 lag_x 之间的距离
  from point 

1285. 找到连续区间的开始和结束数字


①先给每个数进行排名

②用这些数减去自己的排名,如果减了之后的结果是一样的,说明这几个数是连续的

(原理:等差数列的值,减去等差数列的值,结果才能是一样的。)

③用logid减去排名得出来的数进行group by,也就是把连续的数全都放在一个一个小组里面,求出每个小组的最大值和最小值就可以了

sql 复制代码
SELECT MIN(a.log_id) AS START_ID, MAX(a.log_id) AS END_ID
FROM (SELECT log_id, 
        ROW_NUMBER() OVER (ORDER BY log_id ASC) rn,
        log_id - ROW_NUMBER() OVER (ORDER BY log_id ASC) reference
      FROM Logs) a 
GROUP BY a.reference
ORDER BY start_id
相关推荐
旖旎夜光7 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
像风一样自由20207 小时前
2.如何用FastAPI把一个Python算法封装成HTTP服务
python·算法·fastapi
m0_639906947 小时前
MySQL 锁机制详解|表锁、行锁、意向锁,死锁成因与解决方案
数据库·mysql
D e re k ZH7 小时前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin
青少儿编程课堂7 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:字典树前缀树与单词检索统计
c++·python·算法·bfs·信息学竞赛
文丑颜不良啊7 小时前
LeetCode1401~1420题目解析
java·leetcode
进击的荆棘7 小时前
MySQL——在ubuntu环境下安装MySQL
数据库·mysql·ubuntu
Nuanyt7 小时前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
文丑颜不良啊8 小时前
LeetCode1341~1360题目解析
java·leetcode
Highcharts.js8 小时前
CSUN 2026|Highcharts无障碍数据与AI分享
javascript·人工智能·数据分析·highcharts·图表开发