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

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

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

一、每门课程问题

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

解决办法一: having

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

代码实现

SELECT name
FROM xuesheng
GROUP BY name
HAVING MIN(score)> 80

解决办法二:not in

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

代码实现

SELECT DISTINCT name
FROM xuesheng
WHERE name NOT IN(SELECT DISTINCT nameFROM xueshengWHERE score <=80);

二、topN 问题

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

代码实现

row_number() over( partition by 课程 order by 成绩 desc) as rank
...
where rank <= 2  -- 前两名

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

实现思路:

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

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

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

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

代码实现

SELECT user_id, MAX(count_val) AS max_count  -- 查出了最大连续登陆,where>=7,即7天连续
FROM (-- group by相同日期SELECT user_id, symbol_date, COUNT(*) AS count_valFROM (-- 日期减rank,连续登陆的话,会得到相同日期SELECT user_id, log_date, date_sub(log_date, CAST(rn AS INT)) AS symbol_dateFROM (--  打上rank标识SELECT user_id, log_date, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY log_date) AS rnFROM user_logging_format) c) dGROUP BY user_id, symbol_date
) e
GROUP BY user_id;

四、行转列问题

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

6行变2行,2列变3列

代码实现

SELECT SID,
MAX(case CID when '01' then score else 0 end) '01',
MAX(case CID when '02' then score else 0 end)'02',
MAX(case CID when '03' then score else 0 end)'03'
FROM SC
GROUP BY SID

五、留存问题

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

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

代码实现

select
dd
, count( if(id=lead_id and datediff(dd,lead_dd)=1 ,id, null ) ) as '1 日留存'
, count( if(id=lead_id7 and datediff(dd,lead_dd7)=7 ,id, null ) ) as '7 日留存'
from
(
select
id, dd
, lead(dd,1) over(partition by id order by dd asc ) as lead_dd
, lead(id,1) over(partition by id order by dd asc ) as lead_id
, lead(dd,7) over(partition by id order by dd asc ) as lead_dd7
, lead(id,7) over(partition by id order by dd asc ) as lead_id7
from  (
select 'slm' as id, '2018-12-26' as dd
union all select 'slm' as id, '2018-12-27' as dd
union all select 'slm' as id, '2018-12-28' as dd
union all select 'hh ' as id, '2018-12-26' as dd
union all select 'hh ' as id, '2018-12-28' as dd ) aa
) bb

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.4scrum report

转载于:https://www.cnblogs.com/76er/archive/2012/12/04/2802336.html

从《2018年全球创新指数报告》看中国创新力!

作者&#xff1a;杨柯巍 张原编辑&#xff1a;煜 佳来源&#xff1a;中国电子信息产业发展研究院摘要&#xff1a;2018 年7 月10 日&#xff0c;世界知识产权组织&#xff08;WIPO&#xff09;、美国康奈尔大学和欧洲工商管理学院&#xff08;INSEAD&#xff09;共同发布《2018…

【每日SQL打卡】DAY 1丨部门工资最高的员工【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 活动流程&#xff1a; 1…

如何从操作系统安装文件提取驱动文件/ How to extract driver files from setup files (win 7)...

在部署 OS 过程中遇到一个问题&#xff0c;需要找到操作系统对于的驱动文件。由于OS都是直接从微软服务器上面copy下来的&#xff0c;所以&#xff0c;要找到对应的 Device Drivers很困难。好不容易找到一个Drivers的文件夹&#xff0c;发现各种驱动啊&#xff0c;估计也只有当…

【每日SQL打卡】​​​​​​​​​​​DAY 2 丨组合两个表【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

业界 |「多巴胺」来袭!谷歌推出新型强化学习框架Dopamine

作者&#xff1a;Pablo Samuel Castro、Marc G. Bellemare 来源&#xff1a;Google AI Blog,机器之心摘要&#xff1a;在过去几年里&#xff0c;强化学习研究取得了多方面的显著进展。在过去几年里&#xff0c;强化学习研究取得了多方面的显著进展。这些进展使得智能体能够以超…

Android客户端与服务器之间传递json数据

在服务器与客户端之间通信&#xff0c;json数据是一种常用格式&#xff0c;本文主要在服务器端构建数据&#xff0c;在客户端接收显示&#xff0c;并且在listview上显示出来 服务器端的构建 简单的javabean与返回结果函数与插入函数略过 public void doGet(HttpServletReque…

高通全系列手机处理器深度解析 (升级选手机必备)附参数对比表

关于高通处理器和ARM之间的关系 正式介绍高通处理器之前&#xff0c;笔者认为还是先来大致了解下高通和ARM公司之间的关系。在之前的文章中我们也介绍过ARM公司以及相应的ARM架构&#xff0c;实际上&#xff0c;包括高通在内所有终端手机芯片厂商的手机处理器产品的底层都是基…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 2丨连续出现的数字【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

《2018中国大数据发展指数报告》发布:广东、上海、贵州、北京、重庆领先

来源&#xff1a;网络传播杂志摘要&#xff1a;2018年8月24日&#xff0c; 中国电子信息产业发展研究院在首届“中国国际智能产业博览会”上发布了《中国大数据发展指数报告(2018年)》。此报告为我国找准大数据行业发展重点、优化行业发展环境、调整行业管理体制机制等提供了有…

利用gitbash上传项目到github

GitHub主要是用作基于Git的分布式版本管理系统的库&#xff0c;可以保存和管理自己的代码&#xff0c;而且主要用作代码的合作开发。不过对于我来说&#xff0c;Git控制系统还比较难以掌握&#xff0c;或者开发小系统还不太用得着&#xff0c;因此我把GitHub当作分享和展示代码…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 3丨删除重复的电子邮箱【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

36氪研究 | 智慧零售行业研究报告

来源&#xff1a;36Kr智慧零售带来的变化&#xff0c;对你我的生活有多大的影响&#xff1f;上世纪末&#xff0c;当你想吃一桌大鱼大肉改善一下近期的伙食&#xff0c;下馆子是一个不错的选择&#xff0c;但由于这样会超出你的消费预期&#xff0c;买回家自己烹饪便成为了你唯…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 3丨行程和用户【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

数据结构之线性表

一、线性表的顺序存储实现&#xff0c;利用数组实现线性表 typedef struct{int Data[MAXSIZE];int Last; }List;List *MakeEmpty() {List *PtrL;PtrL(List*)malloc(sizeof(List));PtrL->Last-1;return PtrL; } int FindKth( int K, List* PtrL ) //根据位序K&#xff0c;返…

读写Excel2003文档

1.程序说明1.1编程语言&#xff1a;Java1.2 第三方库&#xff1a;Apache POIApache POI 官网&#xff1a;http://poi.apache.org/下载页面&#xff1a;http://poi.apache.org/download.html版本3.8下载地址&#xff1a;http://www.apache.org/dyn/closer.cgi/poi/release/bin/p…

行业|深度解析:医疗机器人商用要过几道坎

来源&#xff1a; 《瞭望》新闻周刊记者扈永顺“深层血管不好找&#xff0c;医生给患者扎针主要靠经验。现在用我们的超声导航穿刺辅助医疗机器人系统&#xff0c;可以从实时超声影像屏幕上看到血管的位置&#xff0c;并基于穿刺路径规划以及穿刺导航系统&#xff0c;辅助医护人…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨游戏玩法分析 I【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

数据结构之堆栈与队列

堆栈与队列是两种重要的基础数据结构&#xff0c;一个是先入后出&#xff0c;一个是先入先出&#xff0c;有着广泛的应用&#xff0c;本文分别使用数组与链表实现堆栈与队列 顺序存储方式实现堆栈 #define MaxSize 20 #define ERROR -1 typedef struct {int Data[MaxSize];in…

Oracle修改表空间大小

使用Oracle10g建立数据库后&#xff0c;向数据库中导入了部分数据&#xff0c;第二天继续向数据库中导入数据表时发生错误&#xff1a; 查了很多资料发现原来是Oracle表空间限制&#xff0c;导致无法继续导入数据的原因。如果在建立数据库时没有设置&#xff0c; Oracle 默认的…