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

前端之家收集整理的这篇文章主要介绍了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)

猜你在找的MsSQL相关文章