sql sever中怎么查询每门课程的课程号及相应的选课人数
时间: 2024-10-27 19:14:45 浏览: 14
在SQL Server中,你可以使用`GROUP BY`和`COUNT()`函数来查询每门课程的课程号(假设为`course_id`)以及对应的选课人数。这里有一个基本的查询示例:
```sql
SELECT course_id, COUNT(student_id) AS student_count
FROM courses
JOIN enrollments ON courses.course_id = enrollments.course_id
GROUP BY courses.course_id;
```
在这个查询中:
- `courses` 表包含课程信息,包括课程号 (`course_id`)。
- `enrollments` 表记录学生的选课情况,其中 `course_id` 列对应 `courses` 表的 `course_id`。
- `JOIN` 操作将两个表关联起来,基于相同的课程ID。
- `COUNT(student_id)` 计算每个课程有多少条学生记录,即有多少人选择了这门课。
- `GROUP BY courses.course_id` 将结果按课程号分组,以便得到每个课程各自的选课人数。
相关问题
SQL SEVER求各个课程号及相应的选课人数。查询结果按选课人数降序排列。如果课程的选课人数有相同的情况,按平均成绩降序排列。
好的,您可以尝试使用以下 SQL 查询语句:
```
SELECT course_id, COUNT(DISTINCT student_id) as student_count, AVG(score) as avg_score
FROM student_course
GROUP BY course_id
ORDER BY student_count DESC, avg_score DESC;
```
解释一下这个查询语句:
- `student_course` 是指学生选课表的表名,您需要替换成您实际使用的表名。
- `course_id` 表示选修的课程编号。
- `COUNT(DISTINCT student_id) as student_count` 表示计算选修该课程的学生人数。
- `AVG(score) as avg_score` 表示计算选修该课程的学生平均成绩。
- `GROUP BY course_id` 表示按课程编号分组,以便计算每个课程的选课人数和平均成绩。
- `ORDER BY student_count DESC, avg_score DESC` 表示按选课人数降序排列,如果选课人数相同,再按平均成绩降序排列。
希望这个查询语句能够帮到您!
sql sever 查询选课人数不足4人的课程号及人数信息(含无学生选修的课程)
可以使用以下 SQL 语句查询选课人数不足4人的课程号及人数信息:
SELECT c.课程号, COUNT(s.学号) AS 选课人数
FROM 课程表 c LEFT JOIN 选课表 s ON c.课程号 = s.课程号
GROUP BY c.课程号
HAVING COUNT(s.学号) < 4 OR COUNT(s.学号) IS NULL;
其中,课程表和选课表分别是存储课程信息和选课信息的数据库表,LEFT JOIN 表示左连接,即包含左表中的所有记录和右表中符合条件的记录,COUNT 函数用于统计选课人数,GROUP BY 用于按课程号分组,HAVING 用于筛选选课人数不足4人的课程。
阅读全文