SQL笔试竟被这个函数霸屏,牛客题库带你逆袭
牛客每个人最近的登录日期(二)
https://www.nowcoder.com/practice/7cc3c814329546e89e71bb45c805c9ad
在SQL的世界里,窗口函数(Window Functions)就像是一个超级工具箱,能让你在不减少结果集行数的情况下,对数据进行分组、排序和聚合计算。无论是笔试真题还是实际工作中,窗口函数都是你不可或缺的利器。今天,我们就来聊聊这些强大的函数,以及如何在牛客题库中找到相关练习,提升你的SQL技能!
为什么窗口函数如此重要?
窗口函数允许你在一组行上执行计算,同时保留每一行的细节。这意味着你可以在不丢失数据的情况下,进行复杂的分析和计算。无论是排名、聚合还是获取特定行的值,窗口函数都能帮你轻松搞定。
值得关注的是,在近几年的 SQL 笔试真题中,窗口函数的出镜率持续攀升,已然成为考查的重点与热点,我们还等什么,抓紧来学习一下吧!
窗口函数的语法
- 语法:
函数名() OVER ( [PARTITION BY column1, column2, ...] ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... )
PARTITION BY
:可选,用于将数据分组,窗口函数在每个分组内独立计算。ORDER BY
:指定排序规则,必须包含至少一个列。ASC
:升序DESC
:降序
常见的窗口函数
排序和排名函数(重点*)
ROW_NUMBER()
:为每一行分配一个唯一的序号,序号从1开始,按指定的排序规则递增。RANK()
:为每一行分配一个排名,遇到并列的行会分配相同的排名,后续排名会跳过。DENSE_RANK()
:与RANK()
类似,但不会跳过排名。NTILE(n)
:将结果集分为n
个大致相等的组,并为每一行分配一个组号。
聚合函数(次重点*)
SUM()
:计算指定列的总和。AVG()
:计算指定列的平均值。MIN()
:计算指定列的最小值。MAX()
:计算指定列的最大值。COUNT()
:计算指定列的非NULL
值的数量。
较为少用
值函数
LEAD(column, n, default)
:获取当前行之后第n
行的值。LAG(column, n, default)
:获取当前行之前第n
行的值。FIRST_VALUE(column)
:获取当前分组中的第一个值。LAST_VALUE(column)
:获取当前分组中的最后一个值。
分布函数
CUME_DIST()
:计算当前行的累积分布。PERCENT_RANK()
:计算当前行的百分比排名。
🏆 实战训练!这些大厂真题你能做出来吗?
1. 23年蚂蚁-每个月Top3的周杰伦歌曲
- 知识点:窗口函数、分组、排序
在这道题中,你需要使用窗口函数来为每个月的周杰伦歌曲分配排名,然后选择排名前3的歌曲。可以使用ROW_NUMBER()
函数来实现。
2. 23年蚂蚁-最长连续登录天数
- 知识点:窗口函数、日期处理
这道题要求你找出最长的连续登录天数。可以使用ROW_NUMBER()
函数来比较连续天数长短。
3. 24年京东-每个部门薪资排名前两名员工
- 知识点:窗口函数、分组、排序
这道题要求你找出每个部门薪资排名前两名的员工。可以使用RANK()
来处理。
那么这道题是否可以使用其他排名函数来处理呢?
这里我们留下一个悬念,可以通过浏览评论区的讨论或者官方题解来获得答案,也可以通过阅读SQL题库中的排序和排名窗口函数入门讲解来获得对窗口函数的更深理解。
4. 24年京东-每个顾客最近一次下单的订单信息
- 知识点:窗口函数、分组、排序
在这道题中,你需要使用ROW_NUMBER()
函数为每个顾客的订单分配一个序号,然后选择序号为1的订单。
5. 24年阿里-统计每个产品的销售情况
- 知识点:窗口函数、聚合计算
这道题要求你统计每个产品的销售情况,可以使用SUM()
、AVG()
等聚合函数结合窗口函数来实现。
👇刷题练习推荐
通过亲自上手解答这些真题,并结合阅读讨论区的交流与官方题解的解析,相信大家对 SQL 窗口函数 的理解已经有了显著提升!但学习 SQL 绝不仅仅是看懂语法,更重要的是通过大量刷题和实战演练来真正掌握。
想要进一步巩固知识,检验自己的 SQL 水平?强烈推荐大家到 SQL 大厂笔试真题题库 进行实战挑战,感受真实面试中的高频考点!
以上题目示例仅仅是冰山一角! SQL 题库中还有更多涉及窗口函数的高质量真题等待大家去挖掘:
✅ SQL 大厂笔试真题 —— 大厂经典考题,提前适应面试节奏!
✅ SQL 热题精选 —— 高频热门 SQL 题,刷透面试高分必考点!SQL 基础还不够扎实? 别担心! SQL 快速入门 提供了循序渐进的练习题,从零开始,帮你稳步夯实 SQL 基础,让你快速进阶!
📌 无论你是 SQL 小白,还是想挑战更难的 SQL 题目,这里都有适合你的练习!机会永远留给有准备的人,坚持刷题、总结、复盘,你的 SQL 技能一定会突飞猛进!
快来 SQL 题库练习吧!挑战自己,一步步提升,一定顺利拿下面试 Offer的!