Pendekatan yang lebih efisien umumnya menggunakan fungsi analitik
SELECT hospitalcode,
name,
ward,
annualbudget
FROM (SELECT h.hospitalcode,
h.name,
w.wardno,
w.annualbudget,
rank() over (order by w.annualbudget asc) rnk
FROM hospital h
JOIN ward w
ON (h.hospitalcode = w.hospitalcode))
WHERE rnk = 1
Namun, Anda juga dapat menggunakan subkueri
SELECT h.hospitalcode,
h.name,
w.wardno,
w.annualbudget
FROM hospital h
JOIN ward w
ON (h.hospitalcode = w.hospitalcode)
WHERE w.annualbudget = (SELECT MIN(annualbudget)
FROM ward)
Kedua metode ini akan mengembalikan beberapa baris jika ada beberapa ward yang diikat untuk anggaran terendah. Dengan metode fungsi analitik, Anda dapat menggunakan row_number
fungsi daripada rank
untuk memutuskan ikatan secara sewenang-wenang jika Anda ingin mengembalikan tepat 1 baris setiap kali.