sql >> Database >  >> RDS >> Oracle

SQL-subquery - hoe een minimale waarde te vinden

De efficiëntere benadering is over het algemeen het gebruik van analytische functies

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

U kunt echter ook een subquery gebruiken

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)

Beide methoden retourneren meerdere rijen als er meerdere afdelingen zijn die zijn gekoppeld aan het laagste budget. Met de analytische functiemethode kunt u het row_number . gebruiken functie in plaats van rank om de gelijkspel willekeurig te verbreken als u elke keer precies 1 rij wilt retourneren.



  1. SQLite JSON_SET()

  2. Java Verbinding maken met externe MySQL-database

  3. Hoe om te gaan met InnoDB-deadlocks in Java/JDBC?

  4. Hoe PostgreSQL in een Docker-container te controleren:deel twee