Има няколко начина, по които това може да стане:
Филтър в WHERE
клауза:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Или подзаявка:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Или можете да използвате TOP WITH TIES
. Ако не може да има връзки, тогава можете да премахнете with ties
. Това ще включва всички редове, които имат същата стойност на населението:
select top 1 with ties id, name, population
from yourtable
order by population desc
Тъй като използвате SQL Server, можете също да използвате функции за класиране, за да получите резултата:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Вижте SQL Fiddle с демонстрация на всички.
Като странична бележка относно функцията за класиране, може да искате да използвате dense_rank()
вместо row_number()
. Тогава в случай, че имате повече от един град със същото население, ще получите имената на двата града. (Вижте демонстрация)