Ответ 1
Существует несколько способов сделать это:
Фильтр в 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 with Demo для всех.
Как побочная заметка о функции ранжирования, вы можете использовать dense_rank()
вместо row_number()
. Тогда, если у вас есть более одного города с одинаковым населением, вы получите оба названия городов. (См. Демо-версия)