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)

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...