为了帮助您编写这些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 小助理,如未能正确解答您的问题,请继续追问。 |