3

这5个超级经典SQL都不会,回去等通知吧

 2 years ago
source link: https://blog.csdn.net/weixin_39032019/article/details/121139075
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

🍅 简介:CSDN博客专家🏆、信息技术智库公号作者✌  简历模板、PPT模板、学习资料、面试题库、技术互助【关注我,都给你】

🍅 欢迎点赞 👍 收藏 ⭐留言 📝   

一、每门课程问题

用一条 SQL 语句查询 学生表每门课都大于 80 分的学生姓名。

解决办法一: having

思路:如果最小的课程都大于80分,那他所有的课程分数,肯定都大于80分!

代码实现

解决办法二:not in

可以用反向思维,先查询出表里面有小于 80 分的 name,然后用 not in 去除掉

代码实现

二、topN 问题

案例:查询各科成绩前两名的记录

代码实现

三、连续问题(7 天连续登陆)

实现思路:

  1. 因为每天用户登录次数可能不止一次,所以需要先将用户每天的登录日期去重。

  2. 再用row_number() over(partition by _ order by _)函数将用户id分组,按照登陆时间进行排序。

  3. 计算登录日期减去第二步骤得到的结果值,用户连续登陆情况下,每次相减的结果都相同。

  4. 按照id和日期分组并求和,筛选大于等于7的即为连续7天登陆的用户。

代码实现

四、行转列问题

行转列可谓是经典中的经典了,必须掌握了!

6行变2行,2列变3列

代码实现

五、留存问题

留存率是衡量用户质量的最重要指标之一,因此计算用户留存率是用户数据分析中必须掌握的技能之一。同样也成为了面试经典sql之一。

留存率指标中,通常需要关注次日留存、3日留存、7日留存和月留存。对新增用户而言,需要关注更细颗粒度的数据,也就是7日内每天的留存率。

代码实现

添加文末公众号「信息技术智库」:

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、前端等。

👇👇技术交流、非诚勿👇👇


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK