对于教学数据库的三个基本表: Stdent(SNO,SNAME,AGE,SEX) SC(SNO,CNO,GRADE) Course(CNO,CNAME,TEACHER) 试用SQL的查询语句表达下列查询: 1统计每门课程的学生选修人数(超过15人的课程才统计)。要求显示课程号,课程名和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。(10分)
时间: 2024-03-20 14:44:23 浏览: 52
学生-课程-选课(学习数据库经典的例子,3个表SQL Server数据库)
4星 · 用户满意度95%
可以使用如下SQL查询语句实现:
```
SELECT Course.CNO, Course.CNAME, COUNT(SC.SNO) AS num
FROM Course JOIN SC ON Course.CNO = SC.CNO
GROUP BY Course.CNO, Course.CNAME
HAVING COUNT(SC.SNO) > 15
ORDER BY num DESC, Course.CNO ASC;
```
解释一下这个查询语句:
- 首先通过 `JOIN` 连接 `Course` 表和 `SC` 表,根据课程号将两张表关联起来。
- 然后使用 `GROUP BY` 对每个课程进行分组。
- 使用 `COUNT(SC.SNO)` 计算每门课程的学生选修人数,并将其命名为 `num`。
- 使用 `HAVING COUNT(SC.SNO) > 15` 条件过滤掉选修人数少于等于15人的课程。
- 最后使用 `ORDER BY` 按照选修人数 `num` 降序排列,并且如果选修人数相同,按照课程号 `Course.CNO` 升序排列。
阅读全文