SQL中统计每门课程的选修学生人数以及各门课程的平均成绩
时间: 2024-03-05 19:49:30 浏览: 294
可以使用如下的 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)`函数来计算每门课程的平均成绩。最终的结果会按照课程名称进行排序。
用SQL命令查找每门课的选修人数及平均成绩,sc表中提供了选修课程的学生学号和学生的的课程成绩,course中提供了课程号,课程名,sc中的课程号是course表的外键。
好的,这个问题可以回答。SQL语句如下:
SELECT course.cname, COUNT(DISTINCT sc.sno) AS enrollments, AVG(sc.score) AS average_score
FROM course
LEFT JOIN sc ON course.cno = sc.cno
GROUP BY course.cno
这个语句会查询出每门课的课程名,选修人数以及平均成绩。leftJoin用于查询课程表中所有课程,即使这门课没有任何选修的学生。DISTINCT用于剔除重复的学号。GROUP BY语句用于根据课程编号分组,以聚合函数进行统计。
阅读全文