sql - 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;
解决方案
那是聚合和行限制子句。假设像这样的表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
推荐阅读
- java - ArrayList VS ArrayDeque 在移动元素中?
- reactjs - TypeScript - 我应该如何输入这些 React 组件?
- graphics - 是否有 R 函数来创建图形以可视化比较百分比?
- python - 如何查找列表B中有多少项形成列表A
- python - Pandas - 在返回车站之前找到最大的出租车停靠站数量
- reactjs - 使用 Storybook.js 提供静态资产
- asp.net - 您如何构建物理和逻辑/解决方案文件夹?
- flutter - 将数据传递给 initState 函数
- javascript - 在 Firestore javascript 中保存为字符串的数字
- css - 如何将元素设置为高度 0px?