sql >> Databasteknik >  >> RDS >> Oracle

SQL Sub-Query - hur man hittar ett min-värde

Det effektivare tillvägagångssättet är i allmänhet att använda analytiska 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 dock också använda en underfråga

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)

Båda dessa metoder kommer att returnera flera rader om det finns flera avdelningar som har den lägsta budgeten. Med den analytiska funktionsmetoden kan du använda row_number funktion snarare än rank att godtyckligt bryta oavgjort om du vill returnera exakt 1 rad varje gång.



  1. PHP MySQL-fråga där x =$variabel

  2. MySql Bestäm en radförskjutning från ett frågeresultat

  3. Sortering efter någon kolumn och även efter rand() i MySQL

  4. Postgres fulltextsökning:hur söker man efter flera ord i flera fält?