学生表s:
s学号 s姓名
课表b:
b课号 b课名 b学分
成绩表c:
s学号 b课号 c成绩
1.查询每门课程的最高分、最低分
2.查询至少选修三门课程的学生(姓名和学号)
3.查询有二门以上课不及格的学生(姓名和学号)
4.查询选修人数60人以上的课程
1、查询每门课程的最高分、最低分:
SELECT b.b课号, b.b课名, MAX(c.c成绩) AS 最高分, MIN(c.c成绩) AS 最低分
FROM b
JOIN c ON b.b课号 = c.b课号
GROUP BY b.b课号, b.b课名;
2、查询至少选修三门课程的学生(姓名和学号):
SELECT s.s学号, s.s姓名
FROM s
JOIN c ON s.s学号 = c.s学号
GROUP BY s.s学号, s.s姓名
HAVING COUNT(DISTINCT c.b课号) >= 3;
3、查询有二门以上课不及格的学生(姓名和学号):
这里假设不及格是指成绩小于60分。
SELECT s.s学号, s.s姓名
FROM s
JOIN c ON s.s学号 = c.s学号
WHERE c.c成绩 < 60
GROUP BY s.s学号, s.s姓名
HAVING COUNT(c.b课号) > 2;
4、查询选修人数60人以上的课程:
SELECT b.b课号, b.b课名
FROM b
JOIN c ON b.b课号 = c.b课号
GROUP BY b.b课号, b.b课名
HAVING COUNT(DISTINCT c.s学号) > 60;