微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 查找最大值并显示SQL Server中不同字段的相应值

我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段.
ID      Name    Population
1       A       45667   
2       B       123456  
3       C       3005    
4       D       13769

要找到最大人口是基本的,但是我需要一个生成的表,其中一个列的最大总体数和相应的城市的名称在另一列

Population      Name    
123456          B

我已经看过similar个问题,但由于某些原因,答案看起来过于复杂.有没有办法在1或2行中写入查询

解决方法

有几种方法可以做到这一点:

WHERE子句中的过滤器

select id,name,population
from yourtable
where population in (select max(population)
                     from yourtable)

或者一个查询

select id,population
from yourtable t1
inner join
(
  select max(population) MaxPop
  from yourtable
) t2
  on t1.population = t2.maxpop;

或者您可以使用TOP WITH TIES.如果没有关系,那么你可以删除与关系.这将包括具有相同总体值的任何行:

select top 1 with ties id,population
from yourtable
order by population desc

由于您使用sql Server,您还可以使用排名函数获取结果:

select id,population
from
(
  select id,population,row_number() over(order by population desc) rn
  from yourtable
) src
where rn = 1

参见SQL Fiddle with Demo.

作为排名函数的附注,您可能需要使用dense_rank()而不是row_number().那么如果你有不止一个人口相同的城市,你将会得到这两个城市的名字. (见Demo)

原文地址:https://www.jb51.cc/mssql/82881.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐