sql >> Base de Datos >  >> RDS >> Sqlserver

Encuentre el valor máximo y muestre el valor correspondiente de un campo diferente en el servidor SQL

Hay varias formas de hacerlo:

Un filtro en el WHERE cláusula:

select id, name, population
from yourtable
where population in (select max(population)
                     from yourtable)

O una subconsulta:

select id, name, population
from yourtable t1
inner join
(
  select max(population) MaxPop
  from yourtable
) t2
  on t1.population = t2.maxpop;

O puedes usar TOP WITH TIES . Si no puede haber vínculos, puede eliminar el with ties . Esto incluirá cualquier fila que tenga el mismo valor de población:

select top 1 with ties id, name, population
from yourtable
order by population desc

Dado que está utilizando SQL Server, también puede utilizar funciones de clasificación para obtener el resultado:

select id, name, population
from
(
  select id, name, population,
    row_number() over(order by population desc) rn
  from yourtable
) src
where rn = 1

Ver SQL Fiddle con demostración de todos.

Como nota al margen sobre la función de clasificación, es posible que desee utilizar dense_rank() en lugar de row_number() . Luego, en el caso de que tenga más de una ciudad con la misma población, obtendrá los nombres de ambas ciudades. (Ver demostración)