Można to zrobić na kilka sposobów:
Filtr w WHERE
klauzula:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Lub podzapytanie:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Możesz też użyć TOP WITH TIES
. Jeśli nie może być żadnych powiązań, możesz usunąć with ties
. Obejmuje to wszystkie wiersze o tej samej wartości populacji:
select top 1 with ties id, name, population
from yourtable
order by population desc
Ponieważ używasz SQL Server, możesz również użyć funkcji rankingu, aby uzyskać wynik:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Zobacz SQL Fiddle z demo wszystkich.
Na marginesie funkcji rankingu możesz użyć dense_rank()
zamiast row_number()
. Jeśli masz więcej niż jedno miasto o tej samej populacji, otrzymasz obie nazwy miast. (Zobacz demo)