我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段.
- 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)