sql >> Databáze >  >> RDS >> Oracle

Oracle:získat maximální hodnotu skupiny?

Měl bych tendenci používat analytické funkce

SELECT monitor_id,
       host_name,
       calibration_date,
       value
  FROM (SELECT b.monitor_id,
               b.host_name,
               a.calibration_date,
               a.value,
               rank() over (partition by b.monitor_id order by a.calibration_date desc) rnk
          FROM table_name a,
               table_name2 b
         WHERE a.some_key = b.some_key)
 WHERE rnk = 1

Můžete také použít korelované poddotazy, i když to bude méně efektivní

SELECT monitor_id,
       calibration_date,
       value
  FROM table_name a
 WHERE a.calibration_date = (SELECT MAX(b.calibration_date)
                               FROM table_name b
                              WHERE a.monitor_id = b.monitor_id)


  1. Optimalizace postgresového dotazu na podobnost (pg_trgm + gin index)

  2. Předání varchar plného hodnot oddělených čárkou do funkce SQL Server IN

  3. Chyba při zálohování pomocí mysqldump v příkazovém řádku mysql

  4. Nelze nainstalovat klenot mysql na Mac OS X