【问题标题】:SQL getting the maximum value of the average of the valuesSQL获取平均值的最大值
【发布时间】:2021-02-14 14:26:42
【问题描述】:

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

编辑:对于试图帮助我的人,这是我得到的错误: enter image description here

这是代码:

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;

【问题讨论】:

  • 我删除了不一致的数据库标签。请标记您真正使用的数据库。 . .并提供样本数据和期望的结果。
  • 不要一次完成所有操作。分两步进行。首先进行查询,为每个学生提供一行,包括他们的平均分。然后,将其用作子查询,并在按平均标记降序排序时选择第一行。

标签: sql ms-access sql-order-by inner-join average


【解决方案1】:

好的,我现在知道了。我刚刚选择了学生ID等于的名字 到 avg 较大的前 1 个 id。

Here is what I did:
SELECT studentsTbl.name
FROM studentsTbl
WHERE studentId = (SELECT TOP 1 studentId FROM gradesTbl GROUP BY studentId ORDER BY AVG(grade) DESC);

【讨论】:

    【解决方案2】:

    这是聚合和行限制子句。假设像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 
    

    【讨论】:

    • 它对我来说说 LIMIT 有问题,MS Access 甚至支持 LIMIT 吗?
    • @ofekAgayev:如果您正在运行 Access,则需要 top。查看我的更新。
    • 我正在尝试使用它,但它似乎不起作用,它只是给我一个错误..
    • 我编辑了帖子,以便您查看我的代码和错误
    • @ofekAgayev:如果你使用seect top 1而不是select top (1),它会起作用吗?
    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多