これを行うにはいくつかの方法があります:
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フィドルを参照してください。
ランキング関数の補足として、dense_rank()
を使用することをお勧めします row_number()
の代わりに 。次に、同じ人口の都市が複数ある場合は、両方の都市名を取得します。 (デモを参照)