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

力扣【SQL连续问题】

180. 连续出现的数字

在这里插入图片描述
在这里插入图片描述

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. 连续空余座位

在这里插入图片描述
在这里插入图片描述

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
-- 执行速度慢
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. 直线上的最近距离

在这里插入图片描述
在这里插入图片描述

-- 方法一:
SELECT MIN(ABS(a.x - b.x)) AS shortest
FROM Point a
LEFT OUTER JOIN Point b
ON a.x <> b.x
-- 方法二:
select  x - lag(x) over(order by x) as shortest
  from point
 order by shortest
 limit 1
 offset 1

-- 方法二中的中间输出 
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,也就是把连续的数全都放在一个一个小组里面,求出每个小组的最大值和最小值就可以了

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

http://www.kler.cn/a/467725.html

相关文章:

  • 图漾相机基础操作
  • THREE.js的VideoTexture以及CanvasTexture在部分浏览器以及小程序webview中纯黑不起作用的解决办法
  • 练习(继承)
  • SQL编程语言
  • 嵌入式linux中socket控制与实现
  • 计算机网络常见面试题及解答
  • Spring源码分析之事件机制——观察者模式(二)
  • 理解linux内核中的几种地址
  • Java枚举和常量类的区别以及优缺点
  • wordpress开发之实现使用第三方库qrcode-generator生成二维码并上传和展示
  • 若依使用 Undertow 替代 Tomcat 容器
  • 密码学原理技术-第十一章-Hash Functions
  • java_配置使用nacos完整示例
  • 默认ip无法访问,利用dhcp功能获取ip进行访问的方法
  • 三子棋游戏
  • centos双网卡不能上网
  • Nginx:安装部署和升级(平滑升级)
  • js-19-手写题
  • 软件逆向之标志位
  • 【测试工具】 Postman 基本使用
  • 【Linux】调度优先级(谦让度)
  • spring、spring boot、Springmvc 的区别和关系
  • k8s集群部署 - Dashboard v2.7
  • MySQL 8 主从同步配置(Master-Slave Replication)
  • ESP32移植Openharmony外设篇(7)土壤湿度传感器YL-69
  • Python进阶-08-继承性