คุณสามารถใช้การวิเคราะห์สำหรับการสืบค้นดังนี้:
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
แก้ไขอีกครั้งหนึ่ง คุณสามารถหลีกเลี่ยงการเลือกแบบซ้อนได้ แต่ไม่ใช่แบบสอบถามย่อย:
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)
ที่ 2? คุณเคยเห็นมันทำที่ไหน? - person mechanical_meat   schedule 09.07.2011