sql >> Databasteknik >  >> RDS >> Oracle

Oracle:få maximalt värde av en grupp?

Jag brukar använda analytiska funktioner

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

Du kan också använda korrelerade underfrågor men det blir mindre effektivt

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. EXTRACTA (datetime) Funktion i Oracle

  2. MySQL NOT IN-frågan fungerar inte

  3. MySQL:Utöka datumintervallet till nya rader

  4. Kan Oracle TDE skydda data från DBA?