SQL大厂笔试竟被这个函数霸屏

在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的周杰伦歌曲

23年蚂蚁-每个月Top3的周杰伦歌曲

  • 知识点:窗口函数、分组、排序

在这道题中,你需要使用窗口函数来为每个月的周杰伦歌曲分配排名,然后选择排名前3的歌曲。可以使用ROW_NUMBER()函数来实现。

2. 23年蚂蚁-最长连续登录天数

23年蚂蚁-最长连续登录天数

  • 知识点:窗口函数、日期处理

这道题要求你找出最长的连续登录天数。可以使用ROW_NUMBER()函数来比较连续天数长短。

3. 24年京东-每个部门薪资排名前两名员工

24年京东-每个部门薪资排名前两名员工

  • 知识点:窗口函数、分组、排序

这道题要求你找出每个部门薪资排名前两名的员工。可以使用RANK()来处理。

那么这道题是否可以使用其他排名函数来处理呢?

这里我们留下一个悬念,可以通过浏览评论区的讨论或者官方题解来获得答案,也可以通过阅读SQL题库中的排序和排名窗口函数入门讲解来获得对窗口函数的更深理解。

4. 24年京东-每个顾客最近一次下单的订单信息

24年京东-每个顾客最近一次下单的订单信息

  • 知识点:窗口函数、分组、排序

在这道题中,你需要使用ROW_NUMBER()函数为每个顾客的订单分配一个序号,然后选择序号为1的订单。

5. 24年阿里-统计每个产品的销售情况

24年阿里-统计每个产品的销售情况

  • 知识点:窗口函数、聚合计算

这道题要求你统计每个产品的销售情况,可以使用SUM()AVG()等聚合函数结合窗口函数来实现。

👇刷题练习推荐

通过亲自上手解答这些真题,并结合阅读讨论区的交流与官方题解的解析,相信大家对 SQL 窗口函数 的理解已经有了显著提升!但学习 SQL 绝不仅仅是看懂语法,更重要的是通过大量刷题和实战演练来真正掌握。

想要进一步巩固知识,检验自己的 SQL 水平?强烈推荐大家到 SQL 大厂笔试真题题库 进行实战挑战,感受真实面试中的高频考点!

以上题目示例仅仅是冰山一角! SQL 题库中还有更多涉及窗口函数的高质量真题等待大家去挖掘:
SQL 大厂笔试真题 —— 大厂经典考题,提前适应面试节奏!
SQL 热题精选 —— 高频热门 SQL 题,刷透面试高分必考点!

SQL 基础还不够扎实? 别担心! SQL 快速入门 提供了循序渐进的练习题,从零开始,帮你稳步夯实 SQL 基础,让你快速进阶!

📌 无论你是 SQL 小白,还是想挑战更难的 SQL 题目,这里都有适合你的练习!机会永远留给有准备的人,坚持刷题、总结、复盘,你的 SQL 技能一定会突飞猛进!

快来 SQL 题库练习吧!挑战自己,一步步提升,一定顺利拿下面试 Offer的!

全部评论
接好运
点赞 回复 分享
发布于 03-26 23:01 辽宁
笔试必考ROW_NUMBER
点赞 回复 分享
发布于 03-26 22:18 山东
笔试必考ROW_NUMBER
点赞 回复 分享
发布于 03-26 19:54 北京
笔试必考ROW_NUMBER
点赞 回复 分享
发布于 03-26 19:34 北京
第一次知道这个东西
点赞 回复 分享
发布于 03-26 19:32 北京
窗口函数真香
点赞 回复 分享
发布于 03-26 19:24 北京

相关推荐

先说我个人情况,本2硕9,测绘遥感专业,做过一些CV,但是后面准备的C++,无论文,无实习1.滴滴杭州日常实习(已经入职半个月),做NLP+agent的大模型客服机器人,已经推上线使用了,我的工作是(清洗数据、SFT、PPO)。mentor对我很好,组内氛围也很好,完全不加班。mentor说想按照暑期实习生培养,后面还要串讲,如果有hc也会转正,往年好像10月多(这一点不能确定,上面还有leader,但是人也很好)2.夸克杭州暑期,视觉组(夸克浏览器识图、orc等功能),C++开发,但是面试的时候跟我说,大部分也可能使用python,不会涉及到算法。不是很了解,但是听说通义C端貌似给夸克了,不知道和这个部门有没有关系。面试官很严肃,问的很偏,问了好多概率论的题主管说没有确切的转正率,看具体表现,8月底转正3.菜鸟杭州暑期,地图工程师(做高精度地图给L4级别无人车自动驾驶),C++开发。这个跟我专业很相关,但是我也没做过这个。目前还没有明确的offer,但是已经约主管面了,一二面 面的很难(好多测绘遥感、计算几何、C++也问的很深),大概率有offer4.等一下其他的(目前,网易互娱mumu二面、腾讯teg二面、灵犀互娱三战组二面),其他的我都给拒了我没有做过NLP相关的,但是有点羡慕NLP的薪资,不知道秋招能不能转过去把滴滴放出来是因为,mentor对我真的很好,组内氛围真的很好,而且mentor对我期望很高,而且我刚刚入职半个月,虽然我知道找工作不能动感情一开始怕自己没有offer,狂投了一堆简历,现在大部分都拒了,大家都会有好的工作的
投递菜鸟集团等公司7个岗位 offer帮选 offer决赛圈,我是怎么选的
点赞 评论 收藏
分享
评论
20
65
分享

创作者周榜

更多
牛客网
牛客企业服务