我有 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
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