首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造这个最大聚合sql查询?

如何构造这个最大聚合sql查询?
EN

Stack Overflow用户
提问于 2020-10-14 11:31:26
回答 3查看 42关注 0票数 0

我有一张表,上面有学生姓名、考试成绩和居住城市。我想选择按唯一城市分类的最高考试分数,并包括获得该分数的学生的姓名。

有人能帮助构造这个sql查询吗?

EN

回答 3

Stack Overflow用户

发布于 2020-10-14 11:34:51

在这里,您对细节的了解有点少,但类似下面这样的内容可能会做到

代码语言:javascript
复制
select *
from (
  select 
    s.*,
    row_number() over ( partition by student_name, city order by test_score desc ) as seq
  from student s
)
where seq = 1
票数 1
EN

Stack Overflow用户

发布于 2020-10-14 14:01:09

Title说你应该使用MAX

这将返回每个城市的最高分数:

代码语言:javascript
复制
select s.city, 
       max(s.score) max_score
from student s
group by s.city

将其用作内联视图:

代码语言:javascript
复制
select a.student_name, 
       m.city,
       m.max_score
from student a join (select s.city,
                            max(s.score) max_score
                     from student s
                     group by s.city
                    ) m
                on a.city = m.city
               and a.score = m.max_score
order by m.city
票数 1
EN

Stack Overflow用户

发布于 2020-10-14 20:04:37

在Oracle中,您可以使用聚合函数完成此操作:

代码语言:javascript
复制
select city, max(score),
       max(name) keep (dense_rank first order by score desc)
from t
group by city;

keep语法是Oracle实现"first()“聚合函数的一种相当冗长的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64346224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档