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)