求教sql查询语句

学生表s:
s学号 s姓名
课表b:
b课号 b课名 b学分
成绩表c:
s学号 b课号 c成绩

1.查询每门课程的最高分、最低分

2.查询至少选修三门课程的学生(姓名和学号)

3.查询有二门以上课不及格的学生(姓名和学号)

4.查询选修人数60人以上的课程

第1个回答  2024-03-13

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;

相似回答