(7)统计每门课程的学生选修人数(大于等于2 人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列;
时间: 2024-05-05 09:19:54 浏览: 43
可以使用以下 SQL 语句来实现该功能:
```
SELECT course_id, COUNT(DISTINCT student_id) AS num
FROM score
GROUP BY course_id
HAVING num >= 2
ORDER BY num DESC, course_id ASC;
```
该语句会从成绩表中按课程 ID 进行分组,然后统计每个课程的唯一学生数量。接着使用 HAVING 子句来筛选选修人数大于等于 2 的课程,最后按选修人数降序排列,若人数相同则按课程号升序排列。
相关问题
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` 子句对每门课程进行分组,以便于统计每门课程的选修学生人数和平均成绩。
mysql统计每门课程的选修学生人数及各门课程的平均成绩
你可以使用以下SQL语句来实现这个功能:
```
SELECT course_name, COUNT(DISTINCT student_id) AS student_num, AVG(score) AS avg_score
FROM course_score
GROUP BY course_name;
```
这个SQL语句假设你有一个名为`course_score`的表,其中包含了每位学生在每门课程中的成绩。这个表至少应该包含以下三列:`student_id`,`course_name`和`score`。`student_id`表示学生的ID,`course_name`表示课程名称,`score`表示学生在这门课程中的成绩。
这个SQL语句使用了`GROUP BY`子句来按照课程名称对数据进行分组,然后使用`COUNT(DISTINCT student_id)`函数来统计每门课程的选修学生人数,使用`AVG(score)`函数来计算每门课程的平均成绩。最终的结果会按照课程名称进行排序。