SQL经典50题
一、导入SQL数据表
1.学生表
1 |
|
2.课程表
1 |
|
3.教师表
1 |
|
4.成绩表
1 |
|
二、SQL函数和优化
三、题目与题解
1.查询” 01 “课程比” 02 “课程成绩高的学生的信息及课程分数
1 |
|
2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
1 |
|
3.查询在 SC 表存在成绩的学生信息
1 |
|
4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
1 |
|
5.查询姓“张”的老师个数
1 |
|
6.查询学过张三老师课的学生的学号和姓名
1 |
|
7.查询没有学全所有课程的同学的信息
1 |
|
8.查询至少有一门课与学号为” 01 “的同学所学相同的同学的信息
1 |
|
9. 查询和” 01 “号的同学学习的课程 完全相同的其他同学的信息
1 |
|
10. 查询没学过”张三”老师讲授的任一门课程的学生姓名
1 |
|
11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
1 |
|
12. 检索” 01 “课程分数小于 60,按分数降序排列的学生信息
1 |
|
13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
1 |
|
14. 查询各科成绩最高分、最低分和平均分
1 |
|
15.以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率;及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
1 |
|
16.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
1 |
|
17.按各科成绩进行排序,并显示排名,Score 重复时合并名次
1 |
|
- 使用rank(),1,2,2,4,4,6
- 使用dense_rank(),1,2,2,3,3,4
18.要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
1 |
|
19.查询学生的总成绩,并进行排名,总分重复时保留名次空缺
1 |
|
20.查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
1 |
|
21.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比
1 |
|
22.查询各科成绩前三名的记录
1 |
|
23. 查询每门课程被选修的学生数
1 |
|
24.查询出只选修两门课程的学生学号和姓名
1 |
|
25. 查询男生,女生人数
1 |
|
26.查询名字中含有「风」字的学生信息
1 |
|
27.查询同名同性学生名单,并统计同名人数
1 |
|
28.查询 1990 年出生的学生名单
1 |
|
29.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
1 |
|
30.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
1 |
|
31.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
1 |
|
32.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
1 |
|
33.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
1 |
|
34.查询不及格的成绩
1 |
|
35.查询程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
1 |
|
36.求每门课程的学生人数
1 |
|
37.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
1 |
|
38.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
1 |
|
39.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
1 |
|
40.查询每门功成绩最好的前两名
1 |
|
41.统计每门课程的学生选修人数(超过 5 人的课程才统计)
1 |
|
42.检索至少选修两门课程的学生学号
1 |
|
43.查询选修了全部课程的学生信息
1 |
|
44.查询各学生的年龄
1 |
|
45.查询本周过生日的同学
1 |
|
46.查询下周过生日的同学(没考虑跨年)
1 |
|
47.查询本月过生日的同学
1 |
|
48.查询下月过生日的同学
1 |
|
SQL经典50题
https://blog.gutaicheng.top/2022/11/05/SQL50题/