Leetcode-Mysql题目及知识点总结(603.连续空余的座位)

计算机小白QAQ,因为想找数分岗暑期实习所以充了会员想集中刷一下leetcode的mysql部分。写这个系列博文和大家们交流一下,后面也会持续更新面经准备的一些问题,欢迎同好们一起交流,求大佬轻喷QAQ。因为自己初学也走了很多弯路,所以会尽量写得详细一点,如果可以帮助到后来的朋友们,请各位留言鼓励一下哈哈哈哈。

603.连续空余的座位

提供两种思路供大家参考,其实这个题蛮有意思的,我觉得不应该放在简单题应该放在中等题hhh

思路1:首先将各座位按照seat_id排序,利用滑动窗口函数求和,窗口大小为2,如果和为2则证明连续的两个座位都是空余的返回后一个座位号,但是最开始头那个座位就缺失掉了,所以我们用的办法是利用union函数,先返回所有后一个座位号再返回所有前一个座位号,将两者利用union函数拼接起来就得到合适的结果了。

知识点1:union去重拼接,union all不去重

知识点2:开窗函数over,一般格式:over(order by 列名 partition by 列名)orderby是按照什么什么排序,partition by是按照该列分组,over表示的开窗范围:range between 5 preceding and 5 following表示为当前行数据幅度减5加5后的范围内的,本题代码中用到的就是rows 1 PRECEDING表示当前行数据向前加一行。但是开窗函数不能单独使用,本题中利用sum()达到向前累计加和的功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值