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

前端之家收集整理的这篇文章主要介绍了sql-server – 查找最大值并显示SQL Server中不同字段的相应值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一张有关城市数据的表格,其中包括他们的姓名,人口和其他与我的问题无关的字段.
  1. ID Name Population
  2. 1 A 45667
  3. 2 B 123456
  4. 3 C 3005
  5. 4 D 13769

要找到最大人口是基本的,但是我需要一个生成的表,其中一个列的最大总体数和相应的城市的名称在另一列

  1. Population Name
  2. 123456 B

我已经看过similar个问题,但由于某些原因,答案看起来过于复杂.有没有办法在1或2行中写入查询

解决方法

有几种方法可以做到这一点:

WHERE子句中的过滤器

  1. select id,name,population
  2. from yourtable
  3. where population in (select max(population)
  4. from yourtable)

或者一个子查询

  1. select id,population
  2. from yourtable t1
  3. inner join
  4. (
  5. select max(population) MaxPop
  6. from yourtable
  7. ) t2
  8. on t1.population = t2.maxpop;

或者您可以使用TOP WITH TIES.如果没有关系,那么你可以删除与关系.这将包括具有相同总体值的任何行:

  1. select top 1 with ties id,population
  2. from yourtable
  3. order by population desc

由于您使用sql Server,您还可以使用排名函数获取结果:

  1. select id,population
  2. from
  3. (
  4. select id,population,row_number() over(order by population desc) rn
  5. from yourtable
  6. ) src
  7. where rn = 1

参见SQL Fiddle with Demo.

作为排名函数的附注,您可能需要使用dense_rank()而不是row_number().那么如果你有不止一个人口相同的城市,你将会得到这两个城市的名字. (见Demo)

猜你在找的MsSQL相关文章