Den mere effektive tilgang er generelt at bruge analytiske funktioner
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
Du kan dog også bruge en underforespørgsel
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)
Begge disse metoder vil returnere flere rækker, hvis der er flere afdelinger, der er bundet til det laveste budget. Med den analytiske funktionsmetode kan du bruge row_number
funktion i stedet for rank
til vilkårligt at bryde uafgjort, hvis du vil returnere præcis 1 række hver gang.