Existem várias maneiras de fazer isso:
Um filtro no
WHERE
cláusula:select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Ou uma subconsulta:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Ou você pode usar
TOP WITH TIES
. Se não houver empates, você poderá remover o with ties
. Isso incluirá todas as linhas que tenham o mesmo valor de população:select top 1 with ties id, name, population
from yourtable
order by population desc
Como você está usando o SQL Server, também pode usar funções de classificação para obter o resultado:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Veja SQL Fiddle com Demo de tudo.
Como uma observação lateral sobre a função de classificação, você pode usar
dense_rank()
em vez de row_number()
. Então, no caso de você ter mais de uma cidade com a mesma população, você receberá os dois nomes de cidades. (Veja demonstração)