首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得按国家分组的最高薪资行?

如何获得按国家分组的最高薪资行?
EN

Stack Overflow用户
提问于 2016-04-20 07:01:46
回答 2查看 51关注 0票数 2
代码语言:javascript
复制
------------------------------------------------
country |   salary  |   name    |   adress  
------------------------------------------------
India   |   10000   |   ch1     |   something
japan   |   20000   |   ch2     |   nothing
india   |   25000   |   ch3     |   hjsdj
japan   |   30000   |   ch4     |   hjhjhj

我需要在日本和印度获得最高工资,并注明姓名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-20 07:06:12

有一个子查询,返回每个国家的最高工资。加入该结果,以获得具有最高薪资的用户。

代码语言:javascript
复制
select t1.*
from tablename t1
join (select country, max(salary) as max_salary
      from tablename group by country) t2
  on t1.country = t2.country and t1.salary = t2.max_salary

如果是平数(即几个最高工资相同的用户),将返回两个用户。

票数 4
EN

Stack Overflow用户

发布于 2016-04-20 07:59:49

如果您的DBMS碰巧支持ROW_NUMBER() OVER()函数,您可以尝试

代码语言:javascript
复制
select * from
  (select ROW_NUMBER() OVER(PARTITION BY country ORDER BY salary DESC) as rn
    , country, salary as max_salary, name, adress
  from tablename
  ) t
where rn = 1  

注意,与jarlh的查询相反,它将只返回国家的任意一行相同的最高工资行。

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

https://stackoverflow.com/questions/36736161

复制
相关文章

相似问题

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