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

sql求解连续两个以上的空座位

Q:查找电影院所有连续可用的座位。
返回按 seat_id 升序排序 的结果表。
测试用例的生成使得两个以上的座位连续可用。
结果表格式如下所示。
在这里插入图片描述
A:我们首先找出所有的空座位:1,3,4,5
按照seat_id排序(上面已经有序),并赋予排名,

seat_idrnkseta_id-rnk
110
321
431
541

我们发现连续的数与其对应的排名均是连续的,那么两者相减应该等于相同的数,因此可以分为以下几步

# 1. t1:获取所有空座位
select seat_id from Cinema where free=1# 2. t2:获取所有的连续数字对应的组
select
seat_id,
seat_id-row_number() over(order by seat_id) diff
from
(select seat_id from Cinema where free=1
) t1# 3. t3:连续的数对应的diff是相同的,可以按照diff分组,并收集空座位号大于等于2的组号
select
diff
from 
(selectseat_id,seat_id-row_number() over(order by seat_id) difffrom(select seat_id from Cinema where free=1) t1
) t2
group by diff having count(seat_id) >=2# 4. 根据t2表以及t3表获取大于等于2个以上的空座位号
select 
seat_id
from 
(selectseat_id,seat_id-row_number() over(order by seat_id) difffrom(select seat_id from Cinema where free=1) t1
) t2
where diff in 
(selectdifffrom (selectseat_id,seat_id-row_number() over(order by seat_id) difffrom(select seat_id from Cinema where free=1) t1) t2group by diff having count(seat_id) >=2
) 

因此,最终代码为:

select 
seat_id
from 
(selectseat_id,seat_id-row_number() over(order by seat_id) difffrom(select seat_id from Cinema where free=1) t1
) t2
where diff in 
(selectdifffrom (selectseat_id,seat_id-row_number() over(order by seat_id) difffrom(select seat_id from Cinema where free=1) t1) t2group by diff having count(seat_id) >=2
) 
http://www.lryc.cn/news/299214.html

相关文章:

  • 【链表】-Lc146-实现LRU(双向循环链表)
  • MYSQL学习笔记:MYSQL存储引擎
  • Bitcoin Bridge:治愈还是诅咒?
  • Netty应用(七) 之 Handler Netty服务端编程总结
  • LeetCode、1268. 搜索推荐系统【中等,前缀树+优先队列、排序+前缀匹配】
  • 计算机视觉基础:矩阵运算
  • Gateway中Spring Security6统一处理CORS
  • 突破编程_C++_基础教程(输入、输出与文件)
  • UE的 HUD 类中的必备方法和属性
  • 单片机的认识
  • 转发:udig安装 用来为geoserver上shp地图配置显示样式 颜色
  • Linux--常用命令(详解)
  • SouthLeetCode-打卡24年02月第1周
  • vscode的cmake工具小三角符号旁边没有目标的解决方法
  • Servlet JSP-Eclipse安装配置Maven插件
  • os模块
  • 【C语言进阶】深度剖析数据在内存中的存储--上
  • 【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行2
  • 【教程】C++语言基础学习笔记(七)——Array数组
  • BUGKU-WEB GET
  • 蓝桥杯每日一题----唯一分解定理
  • openssl3.2 - osslsigncode工程的学习
  • HTML 超文本标记语言
  • sklearn:机器学习 分类特征编码category_encoders
  • C++错误[错误] call of overloaded ‘min(int, int)‘ is ambiguous
  • 2024全栈元年-thinkphp-数据操作
  • HTML世界之第二重天
  • 社区经营的好处与优势:为何越来越多的人选择社区店?
  • C语言系列1——详解C语言:变量、常量与数据类型
  • WordPress修改所有用户名并发送邮件通知的插件Easy Username Updater