我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段.
ID Name Population 1 A 45667 2 B 123456 3 C 3005 4 D 13769
要找到最大人口是基本的,但是我需要一个生成的表,其中一个列的最大总体数和相应的城市的名称在另一列
Population Name 123456 B
解决方法
有几种方法可以做到这一点:
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
作为排名函数的附注,您可能需要使用dense_rank()而不是row_number().那么如果你有不止一个人口相同的城市,你将会得到这两个城市的名字. (见Demo)