在 Join 的 ON 子句中使用 SUM()

问题描述 投票:0回答:1

我有 3 个表,分别名为学生、学生课程和成绩。对于每个学生,我需要计算他们的总体 GPA。所以我有点卡住了。 :(

学生桌

学生id 学生姓名
77 佩佩·勒皮

学生_课程

学生id 课程_id 百分比_成绩
77 101 95.7
77 202 85.9
77 303 77.1
77 404 66.6

成绩

来自_百分比 to_percent 字母_等级 平均绩点
0 69 F 0
70 72 C- 1.67
73 76 C 2.0
77 79 C+ 2.33
80 82 B- 2.67
83 86 B 3.0
87 89 B+ 3.33
90 92 A- 3.67
93 96 A 4.0
97 100 A+ 4.0

这是我的查询出现错误。 (错误代码 1111。组函数的使用无效)我碰巧正在使用 MySQL,但很高兴获得标准 SQL 解决方案。

SELECT student_id, student_name,
(select g.GPA      
 from course_student AS cs    
 inner join Grades AS g ON (sum(cs.percent_grade) / count(*)) BETWEEN g.from_percent AND g.to_percent
 where cs.student_id = students.id) As GPA 
FROM students 
sql mysql join sum
1个回答
0
投票
WITH StudentGrades as
(
SELECT s.student_id, s.student_name, SUM(percent_grade) as TotalGrade, count(*) as CourseCount, SUM(percent_grade) / count(*)  as AvgGrade
FROM students  s
INNER JOIN student_courses c on s.student_id=c.student_id
GROUP BY s.student_id, s.student_name
)
SELECT sg.student_id, sg.student_name, g.letter_grade, g.GPA
FROM StudentGrades sg
INNER JOIN grades g on g.from_percent <= sg.AvgGrade AND g.to_percent >= sg.AvgGrade

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.