अधिक कुशल दृष्टिकोण आम तौर पर विश्लेषणात्मक कार्यों का उपयोग करना है
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
हालांकि, आप एक सबक्वेरी का उपयोग भी कर सकते हैं
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)
यदि न्यूनतम बजट के लिए एक से अधिक वार्ड बंधे हैं, तो ये दोनों विधियाँ कई पंक्तियाँ लौटाएँगी। विश्लेषणात्मक कार्य पद्धति के साथ, आप row_number
. का उपयोग कर सकते हैं rank
के बजाय कार्य करें यदि आप हर बार ठीक 1 पंक्ति वापस करना चाहते हैं, तो मनमाने ढंग से टाई तोड़ने के लिए।