奋力前行的泡泡 2022-08-07 14:35 采纳率: 0%
浏览 174

sql电影院n人连续座位问题

问题遇到的现象和发生背景

img


4个人一起去看电影,准备预订电影票横向坐一起,从这么多排座位中,找出连续4个空位的全部组合,结果输出座位组合情况,例(14)(69)思考—下如果是N个人的话应该如何解决,是否有一套通用的查询语句来完成题目

问题相关代码,请勿粘贴截图

--use sqlsever
select CONCAT('(',a.seat,'~',b.seat,')') 座位
from eight_five_three a left join
(select seat,status,rowid from eight_five_three group by seat,status,rowid) b on (a.seat=b.seat-1 and b.status = '未预订'and a.rowid = b.rowid) left join
(select *,count(seat) x from eight_five_three group by seat,status,rowid) c on ((c.seat between b.seat and a.seat) and c.status = '未预订' and c.rowid = a.rowid)
where a.status = '未预订' and c.x=2
group by a.seat,b.seat

运行结果及报错内容

尝试写出了如上代码,不知道为什么查不出数据

我的解答思路和尝试过的方法

查出首座位和尾座位,查中间满足条件的座位数量是否满足要求,满足则输出首尾座位

我想要达到的结果

结果输出座位组合情况

  • 写回答

3条回答

  • 三千烦恼丝xzh 2022-08-08 07:33
    关注

    我倒是有个筛选N个连续座段的思路但是没想出怎么计算所有组合。
    计算连续段的话两个row_number一个all窗口一个status窗口相减号一样则为连续的段,使用这个号计算一个count即可筛选出N个连续座位,也可以使用collect_set这种收集这些座位号但是计算组合不会搞

    评论

报告相同问题?

问题事件

  • 创建了问题 8月7日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)