做个开心的码农 发表于 2024-10-31 16:36:24

数据库sql查询语句


6、查询王小虎同学所选课程的课程号、课程名和成绩。
7、查询王小虎同学所选课程的平均成绩。

8、查询至少选修了两门课程的学生的学号。
9、查询每个学生所选课程的平均成绩,只列出平均成绩在80分以上的学号和平均成绩,结果按平均成绩降序排列,平均成绩相同的按学号升序排列。

10、查询各院系男女生人数,列出院系、性别和人数。

11、查询至少选修了3门课,且平均成绩在80以上、没有不及格课程的学生,列出学号、姓名。

12、查询选过课、但没有选修选课人数在5以上的课程的学生,列出学号、姓名、所选修课程的门数。

FishC 发表于 2024-10-31 16:42:50

为了帮助您编写这些SQL查询语句,我将逐一解释每个问题的查询逻辑。

6. **查询王小虎同学所选课程的课程号、课程名和成绩。**

SELECT c.课程号, c.课程名, sc.成绩
FROM 学生 s
JOIN 选课 sc ON s.学号 = sc.学号
JOIN 课程 c ON sc.课程号 = c.课程号
WHERE s.姓名 = '王小虎';

7. **查询王小虎同学所选课程的平均成绩。**

SELECT AVG(sc.成绩) AS 平均成绩
FROM 学生 s
JOIN 选课 sc ON s.学号 = sc.学号
WHERE s.姓名 = '王小虎';

8. **查询至少选修了两门课程的学生的学号。**

SELECT sc.学号
FROM 选课 sc
GROUP BY sc.学号
HAVING COUNT(sc.课程号) >= 2;

9. **查询每个学生所选课程的平均成绩,只列出平均成绩在80分以上的学号和平均成绩,结果按平均成绩降序排列,平均成绩相同的按学号升序排列。**

SELECT sc.学号, AVG(sc.成绩) AS 平均成绩
FROM 选课 sc
GROUP BY sc.学号
HAVING AVG(sc.成绩) > 80
ORDER BY 平均成绩 DESC, sc.学号 ASC;

10. **查询各院系男女生人数,列出院系、性别和人数。**

SELECT s.院系, s.性别, COUNT(*) AS 人数
FROM 学生 s
GROUP BY s.院系, s.性别;

11. **查询至少选修了3门课,且平均成绩在80以上、没有不及格课程的学生,列出学号、姓名。**

SELECT s.学号, s.姓名
FROM 学生 s
JOIN 选课 sc ON s.学号 = sc.学号
GROUP BY s.学号, s.姓名
HAVING COUNT(sc.课程号) >= 3
   AND AVG(sc.成绩) > 80
   AND MIN(sc.成绩) >= 60;

12. **查询选过课、但没有选修选课人数在5以上的课程的学生,列出学号、姓名、所选修课程的门数。**

SELECT s.学号, s.姓名, COUNT(sc.课程号) AS 选修课程数
FROM 学生 s
JOIN 选课 sc ON s.学号 = sc.学号
WHERE sc.课程号 NOT IN (
    SELECT sc.课程号
    FROM 选课 sc
    GROUP BY sc.课程号
    HAVING COUNT(sc.学号) > 5
)
GROUP BY s.学号, s.姓名;

这些查询假设数据库中有三个表:`学生`、`选课`和`课程`,并且表结构符合常见的设计。请根据实际的数据库结构进行调整。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 数据库sql查询语句