From 5627a1c82e231facacc956a62ac8d1767b591f91 Mon Sep 17 00:00:00 2001 From: smallkun Date: Tue, 25 Feb 2025 18:43:00 +0800 Subject: [PATCH] Auto commit --- 2207/MySQL练习题/查询练习.md | 98 +++++++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 18 deletions(-) diff --git a/2207/MySQL练习题/查询练习.md b/2207/MySQL练习题/查询练习.md index 94d10d8..0fe2948 100644 --- a/2207/MySQL练习题/查询练习.md +++ b/2207/MySQL练习题/查询练习.md @@ -340,28 +340,90 @@ GROUP BY c.id ORDER BY AVG(sc.score) DESC; #14.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率;(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90) -SELECT c.id '课程ID', c.`name` '课程名称', MAX(s.score) '最高分', MIN(s.score) '最低分', ROUND(AVG(s.score), 1) '平均值' -FROM scores s, courses c -WHERE s.course_id = c.id +SELECT c.id '课程ID', c.`name` '课程名称', MAX(s.score) '最高分', MIN(s.score) '最低分', ROUND(AVG(s.score), 1) '平均值', +s2.s1 '及格率', s2.s2 '中等率', s2.s3 '优良率', s2.s4 '优秀率' +FROM scores s, courses c, +( + SELECT s.course_id, + CONCAT(TRUNCATE(COUNT(IF(s.score >=60, TRUE, NULL))/sc.count*100,2), '%') s1, + CONCAT(TRUNCATE(COUNT(IF(s.score >=70 AND s.score < 80, TRUE, NULL))/sc.count*100,2), '%') s2, + CONCAT(TRUNCATE(COUNT(IF(s.score >=80 AND s.score < 90, TRUE, NULL))/sc.count*100,2), '%') s3, + CONCAT(TRUNCATE(COUNT(IF(s.score >=90, TRUE, NULL))/sc.count*100,2), '%') s4 + FROM scores s, ( + SELECT course_id, COUNT(*) count + FROM scores + GROUP BY course_id + ) sc + WHERE s.course_id = sc.course_id + GROUP BY s.course_id +)s2 +WHERE s.course_id = c.id AND c.id = s2.course_id GROUP BY c.id; -SELECT s.course_id, -CONCAT(TRUNCATE(COUNT(IF(s.score >=60, TRUE, NULL))/sc.count*100,2), '%') s1, -CONCAT(TRUNCATE(COUNT(IF(s.score >=70 AND s.score < 80, TRUE, NULL))/sc.count*100,2), '%') s2, -CONCAT(TRUNCATE(COUNT(IF(s.score >=80 AND s.score < 90, TRUE, NULL))/sc.count*100,2), '%') s3, -CONCAT(TRUNCATE(COUNT(IF(s.score >=90, TRUE, NULL))/sc.count*100,2), '%') s4 -FROM scores s, ( - SELECT course_id, COUNT(*) count - FROM scores - GROUP BY course_id -) sc -WHERE s.course_id = sc.course_id -GROUP BY s.course_id; - - - #15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 #15.1按各科成绩进行排序,并显示排名, Score 重复时合并名次 + +#16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺 + +#16.1查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 + +#17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比 + +#18.查询各科成绩前三名的记录 + +#19.查询每门课程被选修的学生数 + +#20.查询出只选修两门课程的学生学号和姓名 + +#21.查询男生、女生人数 + +#22.查询名字中含有「风」字的学生信息 + +#23.查询同名同性学生名单,并统计同名人数 + +#24.查询 1990 年出生的学生名单 + +#25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列 + +#26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩 + +#27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数 + +#28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况) + +#29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数 + +#30.查询不及格的课程 + +#31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名 + +#32.求每门课程的学生人数 + +#33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 + +#34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 + +#35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 + +#36.查询每门课成绩最好的前两名 + +#37.统计每门课程的学生选修人数(超过 5 人的课程才统计) + +#38.检索至少选修两门课程的学生学号 + +#39.查询选修了全部课程的学生信息 + +#40.查询各学生的年龄,只按年份来算 + +#41.查询各学生的年龄,按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一 + +#42.查询本周过生日的学生 + +#43.查询下周过生日的学生 + +#44.查询本月过生日的学生 + +#45.查询下月过生日的学生 ```