10)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列。
时间: 2024-11-10 13:25:07 浏览: 62
为了统计每门课程的学生选修人数,并只包括超过10人的课程,你可以编写如下的SQL查询:
```sql
SELECT c.course_id, COUNT(e.student_id) AS student_count
FROM courses c
JOIN enrollment e ON c.course_id = e.course_id
GROUP BY c.course_id
HAVING COUNT(e.student_id) > 10
ORDER BY student_count DESC, c.course_id ASC;
```
这个查询做了以下几件事:
1. `JOIN` 把courses表和enrollment表通过course_id关联起来,计算每个课程有多少学生选择。
2. `GROUP BY` 按照课程ID分组,对每个课程的选修人数求和。
3. `HAVING` 子句过滤掉选修人数少于10的课程。
4. `ORDER BY` 结果按照学生的选修人数(降序)和课程号(升序)排列。
结果将显示课程号(course_id)和对应的人数(student_count),满足条件的课程按人数降序排列,如果人数相同,则按课程号升序排列。
相关问题
统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
好的,这是一个计算题。为了得到每门课程的选修人数,我们需要查询选课表并根据课程号进行分组统计,然后筛选出选修人数超过10人的课程并按照要求排序。以下是SQL语句:
```
SELECT course_id, COUNT(*) AS num_students
FROM course_selection
GROUP BY course_id
HAVING num_students > 10
ORDER BY num_students DESC, course_id ASC;
```
这条SQL语句将选课表按照课程号分组,计算每个课程的选修人数,筛选出选修人数超过10人的课程,并按照要求排序输出。
sql语言实现统计每门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
好的,以下是 SQL 语句实现:
```sql
SELECT course_id, COUNT(*) AS num
FROM course_selection
GROUP BY course_id
HAVING num > 10
ORDER BY num DESC, course_id ASC;
```
解释一下:
- `course_selection` 表是选课表,包含学生选修课程的记录,其中 `course_id` 表示课程编号。
- `COUNT(*)` 用于统计每门课程的选修人数。
- `HAVING num > 10` 用于筛选出选修人数超过 10 人的课程。
- `ORDER BY num DESC, course_id ASC` 表示按照选修人数降序排列,若人数相同则按课程号升序排列。
阅读全文