SQL语句 找出每个学生超过或等于他选修课程平均成绩的课程号 没有平均成绩表
时间: 2024-09-20 18:17:17 浏览: 71
10、创建视图,显示每名学生的姓名、选修的课程门数、总周学时数、总学分数和加权平均分的查询,
5星 · 资源好评率100%
为了找出每个学生在其选修课程中得分超过或等于平均成绩的课程号,假设我们有两个表格:一个是`students`表格,包含学生的ID和他们选择的课程ID;另一个是`grades`表格,存储了每个学生的成绩记录,包括学生ID、课程ID和分数。在这种情况下,我们可以使用窗口函数(Window Function)来进行计算,因为这里没有直接提供平均成绩表。下面是一个示例SQL查询:
```sql
WITH student_courses AS (
SELECT students.student_id, grades.course_id, grades.score,
AVG(grades.score) OVER (PARTITION BY students.student_id) AS avg_score
FROM students
JOIN grades ON students.student_id = grades.student_id
)
SELECT sc.student_id, sc.course_id
FROM student_courses sc
WHERE sc.score >= sc.avg_score;
```
这个查询首先创建了一个名为`student_courses`的临时视图,其中包含了每个学生每门课程的成绩及其对应的平均成绩。然后在主查询中筛选出那些得分高于或等于平均成绩的课程。
阅读全文