mysql查询选课了的学生人数和未选课的学生人数
时间: 2024-04-05 15:33:56 浏览: 129
学生选课系统(sql)
5星 · 资源好评率100%
假设你有两张表,一张是学生信息表(Student),另一张是选课信息表(CourseSelection),其中学生信息表包含了所有学生的信息,选课信息表包含了学生选课的记录,包括学生ID和课程ID。
查询选课了的学生人数和未选课的学生人数的 SQL 语句如下:
```
SELECT
COUNT(DISTINCT Student.ID) AS '选课人数',
(SELECT COUNT(*) FROM Student) - COUNT(DISTINCT CourseSelection.StudentID) AS '未选课人数'
FROM
Student
LEFT JOIN
CourseSelection ON Student.ID = CourseSelection.StudentID;
```
上面的 SQL 语句使用了 COUNT、DISTINCT、LEFT JOIN 等关键字。
- COUNT:用于计算行数或非空值的数量。
- DISTINCT:用于去除重复的值。
- LEFT JOIN:用于将两张表按照指定条件进行连接,左表中的所有行都会被保留,而右表中没有匹配的行则会用 NULL 填充。
上面的查询语句中,COUNT(DISTINCT Student.ID) 表示选课了的学生人数,它通过 LEFT JOIN 连接学生信息表和选课信息表,并使用 DISTINCT 去除重复的学生ID,最后使用 COUNT 计算行数。
(SELECT COUNT(*) FROM Student) - COUNT(DISTINCT CourseSelection.StudentID) 表示未选课的学生人数,它使用了子查询和数学计算。子查询语句 SELECT COUNT(*) FROM Student 用于计算学生信息表中的总行数,然后减去选课了的学生人数,得到未选课的学生人数。
执行以上 SQL 语句后,将返回一个结果集,其中包含两个列:选课人数和未选课人数。
阅读全文