Dit kan op verschillende manieren:
Een filter in de WHERE
clausule:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Of een subquery:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Of je kunt TOP WITH TIES
. gebruiken . Als er geen banden kunnen zijn, dan kunt u de with ties
. verwijderen . Dit omvat alle rijen die dezelfde populatiewaarde hebben:
select top 1 with ties id, name, population
from yourtable
order by population desc
Aangezien u SQL Server gebruikt, kunt u ook rangschikkingsfuncties gebruiken om het resultaat te krijgen:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Zie SQL Fiddle met demo van alles.
Als een kanttekening bij de rangschikkingsfunctie, wil je misschien dense_rank()
. gebruiken in plaats van row_number()
. In het geval dat u meer dan één stad met dezelfde bevolking heeft, krijgt u beide stadsnamen. (Zie demo)