次のようなクエリに分析を使用できます。
SELECT name, region, population
FROM (SELECT region, name, population
, MAX(population) OVER (PARTITION BY region) maxpop
FROM bbc)
WHERE population = maxpop;
インライン ビューでは、ベース テーブルのように見えるテーブルに加えて、地域の最大人口を含む追加の列が表示されます。トップレベルの選択により、国、地域、および各地域で最大の国の人口が得られます。
限られた例で説明するには:
SELECT * FROM bbc;
REGION NAME POPULATION
--------------- ------- ----------
North America USA 300000000
North America Canada 100000000
North America Mexico 50000000
South America Brazil 50000000
South America Argentina 40000000
South America Venezuela 20000000
分析関数を追加します。
SELECT region, NAME, population
, MAX(population) OVER (PARTITION BY region) maxpop
FROM bbc;
REGION NAME POPULATION MAXPOP
--------------- ------- ---------- ----------
North America USA 300000000 300000000
North America Canada 100000000 300000000
North America Mexico 50000000 300000000
South America Brazil 50000000 50000000
South America Argentina 40000000 50000000
South America Venezuela 20000000 50000000
次に、完成品:
NAME REGION POPULATION
------- --------------- -----------
USA North America 300000000
Brazil South America 50000000
もう1つの編集。ネスト選択は回避できますが、サブクエリは回避できません。
SELECT NAME, region, population
FROM bbc
WHERE (region, population) IN
(SELECT region, MAX(population)
FROM bbc
group by region);