面试打脸TOP 1!简历写精通SQL,你的良心不会痛吗?

SQL零基础入门教程(5)互联网大厂面试常考SQL题

坦率地说,这些 SQL 查询主要测试三个方面:自连接、窗口化和聚合优化。
其实很简单,但是很多人却被细节所困。

详细来说,自连接的核心是“匹配同一个表中的不同行”。
例如,用户留存需要查找同一用户是否在第二天登录,股票交易需要匹配日期。
我们去年就开展了这个项目,并修改了好几次。
还有一点就是,窗口函数是一个神奇的技能。
例如,在主题排名中,必须使用DENSE_RANK()来避免排名跳跃。
否则的话,第三名可以直接跳到第五名。
说实话,这还挺尴尬的。
还有另一个关键细节。
比如计算每日累计销售额时,ORDER BY就不能省略,否则后果很严重。

一开始我以为炒股问题可以直接用MAX解决,后来发现错了。
我必须使用子查询来确保找到最大的正回报。
许多人没有注意到这一点。
等等,还有一件事。
搜索计数器统计必须分为两步。
首先使用 COUNT(DISTINCT) 删除重复项,然后使用 SUM 进行汇总。
这样对于3 000级的数据可以节省很多时间。

最后提醒:使用聚合函数时,GROUP BY后面不能省略字段。
比如查询成绩≥8 0的学生,如果直接输入MIN(score)进行过滤,会漏掉重复的名字,所以需要GROUP BY名字。
建议多练习这些场景,但不要死记硬背。
理解原理更重要。