El enfoque más eficiente es generalmente usar funciones analíticas
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
Sin embargo, también puede usar una subconsulta
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)
Ambos métodos devolverán varias filas si hay varios distritos que están empatados con el presupuesto más bajo. Con el método de función analítica, puede usar el row_number
función en lugar de rank
para romper arbitrariamente el empate si desea devolver exactamente 1 fila cada vez.