Anda dapat menggunakan analitik untuk pertanyaan seperti itu:
SELECT name, region, population
FROM (SELECT region, name, population
, MAX(population) OVER (PARTITION BY region) maxpop
FROM bbc)
WHERE population = maxpop;
Tampilan sebaris memberi Anda tabel yang terlihat seperti tabel dasar, ditambah kolom tambahan dengan populasi maksimal untuk wilayah tersebut. Pilihan tingkat teratas memberi Anda negara, wilayah, dan populasi negara terbesar di setiap wilayah.
Untuk mengilustrasikannya dengan contoh terbatas:
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
Tambahkan fungsi analitik:
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
Kemudian produk jadi:
NAME REGION POPULATION
------- --------------- -----------
USA North America 300000000
Brazil South America 50000000
Satu kali edit lagi. Anda dapat menghindari pemilihan sarang, tetapi bukan subkueri:
SELECT NAME, region, population
FROM bbc
WHERE (region, population) IN
(SELECT region, MAX(population)
FROM bbc
group by region);
person
DCookie
schedule
09.07.2011
MAX(population)
ke-2? Di mana Anda pernah melihatnya dilakukan? - person mechanical_meat   schedule 09.07.2011