统计每门课程的选课人数,select,from sc,group by
时间: 2023-08-15 09:32:55 浏览: 443
好的,针对您的问题,可以使用以下 SQL 语句来统计每门课程的选课人数:
```sql
SELECT c.course_name, COUNT(DISTINCT sc.student_id) AS student_count
FROM course c
LEFT JOIN student_course sc ON c.course_id = sc.course_id
GROUP BY c.course_id;
```
其中,需要根据您的数据表结构进行相应的调整。这条 SQL 语句的大致思路是:通过课程表和选课表的多表连接,统计每门课程的选课人数。使用`COUNT`函数来计算不同学生的数量,使用`LEFT JOIN`来包含没有选课记录的课程。结果会返回两个列,分别为`course_name`和`student_count`,分别表示课程名和对应的选课人数。
相关问题
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 s.id, s.name, COUNT(sc.id) AS total_courses, SUM(c.credit) AS total_credits
FROM students s
LEFT JOIN student_courses sc ON s.id = sc.student_id
LEFT JOIN courses c ON c.id = sc.course_id
GROUP BY s.id;
```
其中,students 表存储学生信息,包括学生 id 和姓名;courses 表存储课程信息,包括课程 id 和学分;student_courses 表存储学生选课关系信息,包括学生 id 和课程 id。
上述 SQL 语句通过左连接关联三个表,按照学生 id 分组,统计每个学生选课门数和总学分。其中,COUNT(sc.id) 统计选课门数,SUM(c.credit) 统计总学分。
注意,如果一个学生没有选课,则其统计结果中选课门数为 0,总学分为 NULL。如果需要将总学分为 NULL 的结果转换为 0,可以将 SUM 函数改为 IFNULL(SUM(c.credit), 0)。