问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据分析面试必备——SQL经典50题思路及答案详解

发布网友 发布时间:2024-09-27 01:10

我来回答

1个回答

热心网友 时间:2024-10-05 13:16

声明:下列代码在mysql8.0均可以运行。

专门花了些时间,刷完了SQL经典50题。由于前面有些题目比较难,中间有时候老是卡克,所以给大家一点预期。如果过程中遇到难题,没有思路,可以跳过,或者直接参考思路及代码。也算是刷题的路上,自己的一点记录吧,希望能够帮到各位小伙伴~

对考查的知识点小结一下:

涉及基础知识:

WHERE 指定筛选条件;GROUP BY 分组;COUNT()等聚合函数;HAVING 对聚合函数筛选;ORDER BY 排序;子查询(好像没有考查关联子查询);表联结JOIN;自联结;窗口函数 OLAP row_number()/rank()/dense_rank() over(),组内排名PARTITION BY。以及各种各样小的知识点:函数、日期函数、CASE WHEN、IN/LIKE,字符串截取函数substr(),字符串拼接concat()等。基本考查了DML的基础操作,对于DDL的考查较少。

表结构:合计四张表

sc表,即学生成绩表,包含sid(学号)、cid(课程号)、score(成绩)3个字段。

student表,即学生信息表,包含sid(学号)、sname(姓名)、sage(出生日期)、ssex(性别)4个字段。

teacher表,即老师表,包含tid(教师号)、tname(教师姓名)2个字段。

course表,即课程表,包含cid(课程号)、cname(课程名)、tid(授课教师号)3个字段。

题目

创建表,插入数据

思路及答案解析

所谓思路,其实就是翻译翻译。

1、查询“01”课程比“02”课程成绩高的所有学生的学号;

2、查询平均成绩大于60分的同学的学号和平均成绩;

3、查询所有同学的学号、姓名、选课数、总成绩

4、查询姓“李”的老师的个数;

5、查询没学过“张三”老师课的同学的学号、姓名;

6、查询学过编号“01”并且也学过编号“02”课程的同学的学号、姓名;

7、查询学过“张三”老师所教的课的同学的学号、姓名;

8、查询课程编号“01”的成绩比课程编号“02”课程低的所有同学的学号、姓名;

9、查询所有课程成绩小于60分的同学的学号、姓名;

10、查询没有学全所有课的同学的学号、姓名;

11、查询至少有一门课与学号为“01”的同学所学相同的同学的学号和姓名;

12、查询和"01"号的同学学习的课程完全相同的其他同学的学号 考查知识点:子查询

13、把“SC”表中“张三”老师教的课的成绩都更改为此课程的平均成绩;(可以不用做这道题,不然数据都被修改了)

14、查询没学过"张三"老师讲授的任一门课程的学生姓名

15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

16、检索"01"课程分数小于60,按分数降序排列的学生信息

17、按平均成绩从高到低显示所有学生的平均成绩

18、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

20、查询学生的总成绩并进行排名

21、查询不同老师所教不同课程平均分从高到低显示

22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

23、统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比

24、查询学生平均成绩及其名次

25、查询各科成绩前三名(允许并列名次且连续)的记录

26、查询每门课程被选修的学生数

27、查询出只选修了一门课程的全部学生的学号和姓名

28、查询男生、女生人数

29、查询名字中含有"风"字的学生信息

30、查询同名同性学生名单,并统计同名人数

结果都是空,不存在

31、查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)

32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

33、查询包含不及格成绩的课程,并按课程号从大到小排列

34、查询课程编号为"01"且课程成绩在60分以上的学生的学号和姓名;

35、查询选修“张三”老师所授课程的学生中,成绩最高的学生姓名及其成绩

36、查询每门功课成绩最好的前两名

-- 与25题一样,窗口函数实现组内排序partition by (易错,不自觉的就会加上group by ,但聚合的结果是,每组只显示一条数据)

37、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

38、检索至少选修两门课程的学生学号

39、查询选修了全部课程的学生信息

40、查询各学生的年龄

41、查询本周过生日的学生

42、查询下周过生日的学生

43、查询本月过生日的学生

44、查询下月过生日的学生

热心网友 时间:2024-10-05 13:20

声明:下列代码在mysql8.0均可以运行。

专门花了些时间,刷完了SQL经典50题。由于前面有些题目比较难,中间有时候老是卡克,所以给大家一点预期。如果过程中遇到难题,没有思路,可以跳过,或者直接参考思路及代码。也算是刷题的路上,自己的一点记录吧,希望能够帮到各位小伙伴~

对考查的知识点小结一下:

涉及基础知识:

WHERE 指定筛选条件;GROUP BY 分组;COUNT()等聚合函数;HAVING 对聚合函数筛选;ORDER BY 排序;子查询(好像没有考查关联子查询);表联结JOIN;自联结;窗口函数 OLAP row_number()/rank()/dense_rank() over(),组内排名PARTITION BY。以及各种各样小的知识点:函数、日期函数、CASE WHEN、IN/LIKE,字符串截取函数substr(),字符串拼接concat()等。基本考查了DML的基础操作,对于DDL的考查较少。

表结构:合计四张表

sc表,即学生成绩表,包含sid(学号)、cid(课程号)、score(成绩)3个字段。

student表,即学生信息表,包含sid(学号)、sname(姓名)、sage(出生日期)、ssex(性别)4个字段。

teacher表,即老师表,包含tid(教师号)、tname(教师姓名)2个字段。

course表,即课程表,包含cid(课程号)、cname(课程名)、tid(授课教师号)3个字段。

题目

创建表,插入数据

思路及答案解析

所谓思路,其实就是翻译翻译。

1、查询“01”课程比“02”课程成绩高的所有学生的学号;

2、查询平均成绩大于60分的同学的学号和平均成绩;

3、查询所有同学的学号、姓名、选课数、总成绩

4、查询姓“李”的老师的个数;

5、查询没学过“张三”老师课的同学的学号、姓名;

6、查询学过编号“01”并且也学过编号“02”课程的同学的学号、姓名;

7、查询学过“张三”老师所教的课的同学的学号、姓名;

8、查询课程编号“01”的成绩比课程编号“02”课程低的所有同学的学号、姓名;

9、查询所有课程成绩小于60分的同学的学号、姓名;

10、查询没有学全所有课的同学的学号、姓名;

11、查询至少有一门课与学号为“01”的同学所学相同的同学的学号和姓名;

12、查询和"01"号的同学学习的课程完全相同的其他同学的学号 考查知识点:子查询

13、把“SC”表中“张三”老师教的课的成绩都更改为此课程的平均成绩;(可以不用做这道题,不然数据都被修改了)

14、查询没学过"张三"老师讲授的任一门课程的学生姓名

15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

16、检索"01"课程分数小于60,按分数降序排列的学生信息

17、按平均成绩从高到低显示所有学生的平均成绩

18、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

20、查询学生的总成绩并进行排名

21、查询不同老师所教不同课程平均分从高到低显示

22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

23、统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比

24、查询学生平均成绩及其名次

25、查询各科成绩前三名(允许并列名次且连续)的记录

26、查询每门课程被选修的学生数

27、查询出只选修了一门课程的全部学生的学号和姓名

28、查询男生、女生人数

29、查询名字中含有"风"字的学生信息

30、查询同名同性学生名单,并统计同名人数

结果都是空,不存在

31、查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)

32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

33、查询包含不及格成绩的课程,并按课程号从大到小排列

34、查询课程编号为"01"且课程成绩在60分以上的学生的学号和姓名;

35、查询选修“张三”老师所授课程的学生中,成绩最高的学生姓名及其成绩

36、查询每门功课成绩最好的前两名

-- 与25题一样,窗口函数实现组内排序partition by (易错,不自觉的就会加上group by ,但聚合的结果是,每组只显示一条数据)

37、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

38、检索至少选修两门课程的学生学号

39、查询选修了全部课程的学生信息

40、查询各学生的年龄

41、查询本周过生日的学生

42、查询下周过生日的学生

43、查询本月过生日的学生

44、查询下月过生日的学生
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我在电脑上面下的电影在手机上面不显示? 为什么视频在手机里放不出来在电脑里放得出来? 求问bb霜什么牌‍子‍好 BB霜哪个牌子的比较好啊? 我用很多BB霜都过敏脱皮,该用哪个牌子的才能不过敏?拜托了各位 谢谢... 没有去继续教育会计证会不会被吊销? 会计证连续几年未继续教育会被吊销 我想请问,能不能从视频里抓出一段声音,然后保存,变成手机铃声的那种格式... 高中地理知识如何描述地貌特征 中国地理第一讲:自然地理之河流 石膏板、铝扣板、蜂窝大板,厨房吊顶材料你选对了吗? nagios 可以监控到网络设备么 nagios监控hp raid的问题 nagios是怎样监控的,怎么监控客户端的,需要安装什么,nagios监控的原理是... 为什么澄清石灰水加过量二氧化碳与加少量二氧化碳的离子方程式不一样... 有一部动漫的两个男主角一个是黑头发爱抽烟另一个是白色长头发,叫什么... ...的男主角是长头发,并且很爱抽烟,但忘了这部动漫叫什么名字 求一篇关于"我将怎样学习英语”的英语作文 ...一起长大的文。高干宠文和军旅也行。bg,bl不限。 中国最好的战机叫什么 梦见从空中落到自己手里一把雨伞什么意思? 玉米冷冻是生的还是熟 梦见男朋友柔我胸我有感觉的预兆 青岛外贸行业工资水平如何 想知道刚做外贸员的工资是多少 求一款笔记本电脑价格五千以内,主要打游戏用的,屏幕能大一点最好_百度... 五千元能买什么样的笔记本电脑?帮忙推荐配置最好的并写清配置._百度知 ... 宝宝在幼儿园不合群,该如何帮助其融入集体? ...西头的柠檬假日酒店应该怎么走?(点附近有个汽修厂和天安) 润丰村镇银行是不是国有企业 机械键盘rgb和混光哪种好-机械键盘rgb和混光的区别 安徽宿州2012转业士官安置政策 士官转业回家安置后随军的家属怎么办有没有安置政策? 哈奇小镇打葱头菜头得到的花瓣有什么用 请问我在手上有个硬币大的条形纹身.纹了不到一个月.请问能洗得干净吗... pc策略游戏模拟器汉化版安卓游戏如何下载 世界上最大的宫殿建筑群是啥 一个大长方形的周长是15厘米,求它的面积. 旮旯沟开放时间,旅游景点山旮旯 ...正方形边长几厘米,长方形长是15厘米,宽是多少厘米 ...铁丝围成一个长方形,长方形的长是15厘米,宽是多少厘米? ...我们家属迟迟没有领到家属优待金。德阳市民政局是怎么回事。我_百度... 二期士官退伍费多少? 怎样说话更流利 甲型H1N1流感中医药防治治疗方案建议 甲型h1n1流感中医药预防方案(2009版)二、饮食预防 预防甲型H1N1流感的中药配方是什么? 不同人群预防甲型H1N1流感4类中药配方 英制1/4-28怎样计算成公制 请问英制1 1/4''的螺丝转换成国标是多少