考虑学生表和成绩表。成绩表包含学生所有课程的成绩。我想找到平均成绩最高的学生。
我会用CTE来解决这个问题,但似乎MySQL没有提供CTE。 我想编写一个查询来查找具有最大平均值的学生。等级,也避免编写查询,得到平均。所有学生的成绩不止一次。
不起作用的查询如下(这可能会更好地了解我想要实现的目标):
select temp.st_name
from (select st1.student_name st_name, AVG(grade) avg_grade from Student st1, Grades grd1 where st1.student_id = grd1 .student_id group by st1.student_id, st1.sudent_name) temp
where temp.avg_grade = (select MAX(temp.avg_grade) from temp)
上述查询给出错误:表temp不存在。
有没有其他方法可以找到最大平均值的学生。等级,避免两次写入内联视图语句?
谢谢!
答案 0 :(得分:1)
我相信你可以使用ORDER BY和LIMIT,但我从来没有写过任何MYSQL所以我可能错了;)
SELECT
st1.student_name st_name,
AVG(grade) avg_grade
FROM Student st1, Grades grd1
WHERE st1.student_id = grd1 .student_id
GROUP BY
st1.student_id,
st1.sudent_name
ORDER BY avg_grade DESC
LIMIT 1;
注意:我没有更改你的初始语句,但是你应该使用JOIN语法而不是FROM tbl1,tbl2
答案 1 :(得分:0)