sql语言实现统计每门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
时间: 2024-03-22 09:39:06 浏览: 272
好的,以下是 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` 表示按照选修人数降序排列,若人数相同则按课程号升序排列。
相关问题
SQL中统计每门课程的选修学生人数以及各门课程的平均成绩
可以使用如下的 SQL 语句来实现您的需求:
```sql
SELECT Course.Cname, COUNT(SC.Sno) AS num_of_students, AVG(SC.Grade) AS avg_grade
FROM Course
LEFT JOIN SC ON Course.Cno = SC.Cno
GROUP BY Course.Cname;
```
这条 SQL 语句中使用了 `LEFT JOIN` 连接了 `Course` 表和 `SC` 表,以获取每门课程的学生选课情况和成绩信息。使用 `COUNT` 函数可以统计每门课程的选修学生人数,使用 `AVG` 函数可以计算每门课程的平均成绩。最后使用 `GROUP BY` 子句对每门课程进行分组,以便于统计每门课程的选修学生人数和平均成绩。
统计每门课程的学生选修人数(超过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人的课程,并按照要求排序输出。