分享好友 最新动态首页 最新动态分类 切换频道
imsoft.cnblogs
2024-12-26 20:35

网上流传较广的50道SQL训练,奋斗了不知道多久终于写完了。前18道题的难度依次递增,从19题开始的后半部分算是循环练习和额外function的附加练习,难度恢复到普通状态。
第9题非常难,我反正没有写出来,如果有写出来了的朋友还请赐教。
这50道里面自认为应该没有太多错误,而且尽可能使用了最简单或是最直接的查询,有多种不相上下解法的题目我也都列出了,但也欢迎一起学习的朋友进行讨论和解法优化啊~


数据表介绍

--1.学生表
Student(SId,Sname,Sage,Ssex)
--SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

--2.课程表
Course(CId,Cname,TId)
--CId 课程编号,Cname 课程名称,TId 教师编号

--3.教师表
Teacher(TId,Tname)
--TId 教师编号,Tname 教师姓名

--4.成绩表
SC(SId,CId,score)
--SId 学生编号,CId 课程编号,score 分数


1.1 查询同时存在" 01 "课程和" 02 "课程的情况

1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

1.3 查询不存在" 01 "课程但存在" 02 "课程的情况

4.1 查有成绩的学生信息

以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率

及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次

16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺


1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
因为需要全部的学生信息,则需要在sc表中得到符合条件的SId后与student表进行join,可以left join 也可以 right join

1.1 查询同时存在" 01 "课程和" 02 "课程的情况

1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
这一道就是明显需要使用join的情况了,02可能不存在,即为left join的右侧或right join 的左侧即可.

1.3 查询不存在" 01 "课程但存在" 02 "课程的情况

4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和
联合查询不会显示没选课的学生:

如要显示没选课的学生(显示为NULL),需要使用join:

4.1 查有成绩的学生信息
这一题涉及到in和exists的用法,在这种小表中,两种方法的效率都差不多,但是请参考SQL查询中in和exists的区别分析
当表2的记录数量非常大的时候,选用exists比in要高效很多.
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False.
结论:IN()适合B表比A表数据小的情况
结论:EXISTS()适合B表比A表数据大的情况

9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息
不会做。

10.查询没学过"张三"老师讲授的任一门课程的学生姓名
仍然还是嵌套,三层嵌套, 或者多表联合查询

11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
从SC表中选取score小于60的,并group by sid,having count 大于1

以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率

及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

联合查询

21.查询男生、女生人数

23.查询同名学生名单,并统计同名人数
找到同名的名字并统计个数

嵌套查询列出同名的全部学生的信息

24.查询 1990 年出生的学生名单

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

26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
having也可以用来截取结果表,在这里就先得到平均成绩总表,再截取AVG大于85的即可.

30.查询存在不及格的课程
可以用group by 来取唯一,也可以用distinct

31.查询课程编号为 01 且课程成绩在 80 分及以上的学生的学号和姓名

这样张三老师教的02号课就有两个学生同时获得90的最高分了。
这道题的思路继续上一题,我们已经查询到了符合限定条件的最高分了,这个时候只用比较这张表,找到全部score等于这个最高分的记录就可,看起来有点繁复。

36.查询每门功成绩最好的前两名
同上19题

37.统计每门课程的学生选修人数(超过 5 人的课程才统计)

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

40.查询各学生的年龄,只按年份来算
不想做,一般都用41题的方法精确到天

42.查询本周过生日的学生

44.查询本月过生日的学生

最新文章
磁力链接搜索引擎2021:轻松找到你想要的资源
资源丰富多样:磁力链接网络连接了全球各地用户,因此可以找到许多平时难以找到的资源,例如冷门电影、稀有软件、电子书等。下载速度快:由于磁力链接是P2P共享下载,网络上的用户越多,下载速度越快。对于热门资源,可以获得很高的下载速
广州第三代试管医院排名前十,具体名单!
广州第三代试管医院排名前十的具体名单可能因不同评价标准和数据来源而有所差异。以下是根据多方信息和综合评价,列出的广州地区在第三代试管婴儿技术方面具有较高知名度和专业水平的医院名单:1、广东省妇幼保健院性质:广东省规模较大的
百度快照更新攻略
大家在建站过程中,可能都会遇到百度快照不更新的问题。我也不例外,帮朋友维护的一网站(QQ空间留言代码)百度快照时间停在了3月1号,一直到7号也没更新,而同类网站的百度快照几乎天天更新。我这里
首发评测 iGame RTX 4080 水神
前言今天给各位朋友,评测一款最新的RTX4080显卡,iGame GeForce RTX 4080 16GB Neptune OC。RTX 4080 16GB,支持第三代的RT Core且有效光线追踪计算能力达到191TFLOPS(RTX 3080 Ti的2.8倍),第四代Tensor Cores 新增 FP8 引擎,具有高达
软科中国大学排名总榜 被踢出双一流的三所大学
今天国际学校信息网小编整理了软科中国大学排名总榜 被踢出双一流的三所大学相关内容,希望能帮助到大家,一起来看下吧。1、软科中国大学排名总榜2、江苏大学排名3、被踢出双一流的三所大学2023软科中国大学排名(主榜)的上榜高校共有590
百度关键词和搜索词_百度关键词和搜索词什么意思
⊙﹏⊙ 指数显示:“牛市来了”等关键词搜索量创近年来新高百度指数、微信指数显示,“牛市”、“牛市来了”关键词的搜索量创近年来新高。截至9月25日,“牛市来了”关键词在百度指数中创4年新高,比多年的平均值高2.6倍。截至9月25日,“牛
最新版本apk漫画台
软件简介:漫画台是一款非常受欢迎的手机漫画阅读软件。它提供了丰富多样的漫画资源,涵盖了各类题材,满足了用户对于漫画阅读的需求。漫画台的界面简洁清晰,操作流畅,让用户可以轻松畅快地享受漫画阅读的乐趣。软件特色:1. 海量漫画资
航海家着力打造智能驾趣新生活 内外兼修
谈及一款车型,首先应该谈到的就是它的这款车的外观。外观延续家族化设计理念,前脸造型显得凶悍。车身侧面的线条来看,新车侧面轮廓的设计,在一定程度上拉长了该车的视觉效果。尾部通过线条的运用,让后屁股的立体感进一步加强,新车尾部
高清美女写真怎么拍?推荐几个超强AI工具和使用技巧!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个数码化迅猛发展的时代,AI技术正在改变我们生活的方方面面,特别是在图像生成领域。想
软考出分!有种劫后余生的感觉,考软考,主打一个查分也要看运气吗?
2.点击“查询成绩”后,将进入登录页面。接着使用报名时的账号进行登录。3.登录成功后将进入查询界面。在这里选择查询的年份「2024年下半年」。4.接收并输入正确的校验码。5.最后,点击“查询成绩”按钮,大家就可以查看自己的成绩了。PS:
相关文章
推荐文章
发表评论
0评