我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段.
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)
原文地址:https://www.jb51.cc/mssql/82881.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。