本题目要求编写SQL语句, 查找所有开设的课程及被学生选修的情况(选课人数,最高成绩,最低成绩,平均成绩),如某门课程尚未有学生选修时也要列出来。
时间: 2024-11-06 07:13:17 浏览: 51
为了满足您的需求,我们可以创建一个SQL查询来获取每个课程的信息以及相关的统计数据(如果有选修的学生)。假设我们有两个表,一个是`courses`,存储课程信息,另一个是`enrollments`,记录学生的选课情况。`students`表包含学生ID,`scores`表存储每个学生的分数。这里是一个示例查询:
```sql
SELECT
c.course_id,
c.course_name,
COUNT(e.student_id) AS num_students,
MIN(s.score) AS min_score,
MAX(s.score) AS max_score,
AVG(s.score) AS avg_score
FROM
courses c
LEFT JOIN
enrollments e ON c.course_id = e.course_id
LEFT JOIN
scores s ON e.student_id = s.student_id
GROUP BY
c.course_id, c.course_name;
```
这个查询做了以下几件事:
1. 使用`LEFT JOIN`连接了`courses`和`enrollments`表,这样即使某门课程没有学生选修,也会显示出来,并设置其对应的学生数为0。
2. 再次使用`LEFT JOIN`将`enrollments`表和`scores`表关联起来,获取学生的分数。
3. 对每个课程计算选修的学生数、最低分、最高分和平均分。
阅读全文