博客
关于我
LeetCode:Database 27.连续空余座位
阅读量:680 次
发布时间:2019-03-17

本文共 735 字,大约阅读时间需要 2 分钟。

对于从cinema表中查询连续空余座位的问题,可以采用以下两种方法:

方法一:使用JOIN和UNION

SELECT DISTINCT seat_id FROM (    SELECT a.seat_id AS seat_id FROM cinema a    JOIN cinema b ON a.seat_id = b.seat_id - 1    WHERE a.free = 1 AND b.free = 1    UNION ALL    SELECT b.seat_id AS seat_id FROM cinema a    JOIN cinema b ON a.seat_id = b.seat_id - 1    WHERE a.free = 1 AND b.free = 1) cORDER BY seat_id ASC;

方法二:使用LEAD和LAG

SELECT seat_id FROM (    SELECT seat_id, free, LEAD(free, 1, 0) OVER (ORDER BY seat_id) AS f1, LAG(free, 1, 0) OVER () AS f2    FROM cinema) aWHERE free = 1 AND (f1 = 1 OR f2 = 1)ORDER BY seat_id ASC;

结果说明

两种方法均能有效识别连续空余座位。方法一通过 ##[UNION ALL]## 联合两个子查询,分别匹配当前空位与前一个空位,以及当前空位与后一个空位。方法二则利用 SQL 窗口函数 ##[LEAD()## 和 ##[LAG()##] 来识别连续空位区域,能够更直观地展示空位分布情况。

转载地址:http://hrnhz.baihongyu.com/

你可能感兴趣的文章
pandas 将通话数据分割为15分钟的间隔
查看>>
pandas 找到局部最大值和最小值
查看>>
pandas 按日期和年份分组,并汇总金额
查看>>
pandas 数据帧到PostgreSQL表中使用的是没有SQLAlChemy的心理复制2吗?
查看>>
pandas 数据帧多行查询
查看>>
Pandas 数据框:使用线性插值重新采样
查看>>
pandas 数据框将 INT64 列转换为布尔值
查看>>
pandas 数据框将列类型转换为字符串或分类
查看>>
pandas 数据框条件 .mean() 取决于特定列中的值
查看>>
pandas 数据框至海运分组条形图
查看>>
Pandas 数据透视表:列顺序和小计
查看>>
pandas 时序统计的高级用法!
查看>>
pandas 时间序列重新采样结束给定的一天
查看>>
pandas 根据不是常量的第三列的值将值从一列复制到另一列
查看>>
pandas 根据值从多列中的一列查找
查看>>
Pandas 根据布尔条件选择行和列
查看>>
pandas 滚动窗口 - datetime64[ns] 未实现
查看>>
pandas 版本兼容特定的蟒蛇和NumPy配置吗?
查看>>
pandas 生成excel多级表头
查看>>
Pandas 的 DataFrame 详解-ChatGPT4o作答
查看>>