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

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 
(
	select
	seat_id,
	seat_id-row_number() over(order by seat_id) diff
	from
		(
			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 
(
	select
	seat_id,
	seat_id-row_number() over(order by seat_id) diff
	from
	(
		select seat_id from Cinema where free=1
	) t1
) t2
where diff in 
(
	select
	diff
	from 
	(
		select
		seat_id,
		seat_id-row_number() over(order by seat_id) diff
		from
			(
				select seat_id from Cinema where free=1
			) t1
	) t2
	group by diff having count(seat_id) >=2
) 

因此,最终代码为:

select 
seat_id
from 
(
	select
	seat_id,
	seat_id-row_number() over(order by seat_id) diff
	from
	(
		select seat_id from Cinema where free=1
	) t1
) t2
where diff in 
(
	select
	diff
	from 
	(
		select
		seat_id,
		seat_id-row_number() over(order by seat_id) diff
		from
			(
				select seat_id from Cinema where free=1
			) t1
	) t2
	group by diff having count(seat_id) >=2
) 

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

相关文章:

  • 某科技研发公司培训开发体系设计项目成功案例纪实
  • WordCloud参数的用法:
  • 103.【C语言】数据结构之TopK问题详细分析
  • Python人工智能项目报告
  • 洛谷 B3635 硬币问题 C语言 记忆化搜索
  • C++:当vector中存储的是自定义类型对象时注意事项
  • arcgis各种版本下载
  • 再识C语言 DAY15 【指针(中)理论结合实践】
  • 无人机激光雷达标定板
  • 限制Unity帧率的方式
  • 【QT】opcuaServer 的构建
  • ELAdmin 新增Module
  • vite打包原理
  • 4、安全开发-Python-蓝队项目流量攻击分析文件动态监控图片隐写技术
  • Golang 学习(一)基础知识
  • iOS平台RTMP|RTSP播放器如何实时回调YUV数据
  • 使用NLTK进行自然语言处理:英文和中文示例
  • c#cad 创建-多线段(三)
  • 市场复盘总结 20240206
  • 人工智能:数据分析之数据预处理、分析模型与可视化
  • MIT-Missing Semester_Topic 6:Version Control (Git) 练习题
  • 华为OD机试真题C卷-篇3
  • OS X(MACOS) C/C++ 程序链接静态库限制。
  • 2023-总结
  • LeetCode 丑数
  • 【实验3】统计某电商网站买家收藏商品数量