- 26 . 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
- 27 . 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
- 28 . 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
- 29 . 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
- 30 . 查询不及格的课程
- 31 . 查询课程编号为 01 且课程成绩在 80 分及以上的学生的学号和姓名
- 32 . 求每门课程的学生人数
- 33 . 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
- 34 . 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
- 35 . 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
- 36 . 查询每门功成绩最好的前两名(不太理解)
- 37 . 统计每门课程的学生选修人数(超过 5 人的课程才统计)
- 38 . 检索至少选修两门课程的学生学号
- 39 . 查询选修了全部课程的学生信息
- 40 . 查询各学生的年龄,只按年份来算
- 41 . 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一(不会)
- 42 . 查询本周过生日的学生
26 . 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
SELECT student.Sname , sc.SId , AVG(score) FROM student RIGHT JOIN
sc
ON student.SId = sc.SId
GROUP BY sc.SId
HAVING AVG(score) >= 85
27 . 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
SELECT student.sname, sc.score FROM student, sc, course
WHERE student.sid = sc.sid
AND course.cid = sc.cid
AND course.cname = “数学”
AND sc.score < 60;
28 . 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
SELECT student.Sname , sc.CId, sc.score FROM
student LEFT JOIN
sc
ON student.SId = sc.SId
29 . 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
SELECT student.Sname , sc.CId , sc.score
FROM student ,sc , course
WHERE student.SId = sc.SId
AND sc.score > 70
AND sc.cid = course.cid
30 . 查询不及格的课程
SELECT cid FROM sc WHERE score < ‘60’ GROUP BY cid
31 . 查询课程编号为 01 且课程成绩在 80 分及以上的学生的学号和姓名
SELECT sc.SId , student.Sname FROM
sc , student
WHERE
student.SId = sc.SId
AND sc.CId = ‘01’
AND sc.score >= 80
32 . 求每门课程的学生人数
SELECT sc.CId , COUNT(sc.sid) FROM sc
GROUP BY sc.cid
33 . 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
SELECT student.*, sc.score, sc.cid FROM student, teacher, course,sc
WHERE teacher.tid = course.tid
AND sc.sid = student.sid
AND sc.cid = course.cid
AND teacher.tname = “张三”
34 . 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
SELECT student., sc.score, sc.cid FROM student, teacher, course,sc
WHERE teacher.tid = course.tid
AND sc.sid = student.sid
AND sc.cid = course.cid
AND teacher.tname = “张三”
SELECT student., sc.score, sc.cid FROM student, teacher, course,sc
WHERE teacher.tid = course.tid
AND sc.sid = student.sid
AND sc.cid = course.cid
AND teacher.tname = “张三”
AND sc.score = (
SELECT MAX(sc.score)
FROM sc,student, teacher, course
WHERE teacher.tid = course.tid
AND sc.sid = student.sid
AND sc.cid = course.cid
AND teacher.tname = “张三”
);
35 . 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
SELECT a.cid, a.sid, a.score FROM sc AS a
INNER JOIN
sc AS b
ON a.sid = b.sid
AND a.cid != b.cid
AND a.score = b.score
GROUP BY cid, sid;
36 . 查询每门功成绩最好的前两名(不太理解)
SELECT a.sid,a.cid,a.score FROM sc AS a
LEFT JOIN sc AS b
ON a.cid = b.cid AND a.score
HAVING COUNT(b.cid)<2
ORDER BY a.cid;
37 . 统计每门课程的学生选修人数(超过 5 人的课程才统计)
SELECT sc.cid ,COUNT(sc.sid) AS c
FROM sc
GROUP BY sc.cid
HAVING c > 5
38 . 检索至少选修两门课程的学生学号
SELECT sid ,COUNT(cid )FROM sc
GROUP BY sid
HAVING COUNT(cid)>=2
39 . 查询选修了全部课程的学生信息
SELECT student. , COUNT(cid) FROM student , sc
WHERE sc.SId=student.SId
GROUP BY sc.sid
HAVING COUNT() = (SELECT DISTINCT COUNT(*) FROM course)
40 . 查询各学生的年龄,只按年份来算
SELECT * FROM student
GROUP BY sage
41 . 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一(不会)
SELECT student.SId AS 学生编号,student.Sname AS 学生姓名,
TIMESTAMPDIFF(YEAR,student.Sage,CURDATE()) AS 学生年龄
FROM student
42 . 查询本周过生日的学生
SELECT *
FROM student
WHERE WEEKOFYEAR(student.Sage)=WEEKOFYEAR(CURDATE());
