sql >> Database >  >> RDS >> Oracle

Oracle:maximale waarde halen uit een groep?

Ik zou eerder analytische functies gebruiken

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

U kunt ook gecorreleerde subquery's gebruiken, hoewel dat minder efficiënt zal zijn

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. Hoe krijg ik de SUM-functie in MySQL om '0' te retourneren als er geen waarden worden gevonden?

  2. Decimaal onjuist doorgegeven van C# naar SQL Server met TableAdapters

  3. Update SQL Server-statistieken met behulp van een database-onderhoudsplan

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