首页 > 解决方案 > SQL获取平均值的最大值

问题描述

所以,我有一个学校的数据库。它有一个学生表和一个成绩表。我想做一个查询,这会给我平均分最高的学生,我该怎么做?我不明白我应该如何从平均值中获得最大值..有什么帮助吗?

编辑:对于试图帮助我的人,这是我得到的错误: 在此处输入图像描述

这是代码:

SELECT TOP (1) studentsTbl.studentId, studentsTbl.name, Avg(gradesTbl.grade)
FROM studentsTbl INNER JOIN gradesTbl ON studentsTbl.studentId = gradesTbl.studentId
GROUP BY studentsTbl.studentId, studentsTbl.name
ORDER BY Avg(gradesTbl.grade) DESC;

标签: sqlms-accesssql-order-byinner-joinaverage

解决方案


那是聚合和行限制子句。假设像这样的表marks(student_id, mark),你会这样做:

select student_id, avg(mark) avg_mark
from marks
group by student_id
order by avg_mark desc limit 1

行限制子句的语法可能因数据库而异。limit并非所有数据库都支持,但都具有等效的语法。

如果你有学生在另一张桌子上,比如说students(student_id, name),你可以join

select s.student_id, s.name, avg(m.mark) avg_mark
from students s 
inner join marks m on m.student_id = s.student_id
group by s.student_id, s.name
order by avg_mark desc limit 1

在 MS Access 中,使用top

select top 1 s.student_id, s.name, avg(m.mark) as avg_mark
from students as s 
inner join marks as m on m.student_id = s.student_id
group by s.student_id, s.name
order by avg_mark desc 

推荐阅读