加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:16:11 所属栏目:MsSql教程 来源:网络整理
导读:我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段. ID Name Population1 A 45667 2 B 123456 3 C 3005 4 D 13769 要找到最大人口是基本的,但是我需要一个生成的表,其中一个列的最大总体数和相应的城市的名称在另一列 Populatio
我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段.
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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读