Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:uzyskanie maksymalnej wartości grupy?

Zwykle używam funkcji analitycznych

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

Możesz również użyć skorelowanych podzapytań, ale będzie to mniej wydajne

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć połączenie dwóch zestawów danych za pomocą instrukcji Select SQL (Oracle DBMS)?

  2. Łącze do bazy danych Oracle - połącz się z serwerem proxy za pomocą znaków specjalnych w nazwie użytkownika

  3. Składnia Oracle - czy powinniśmy wybierać między starą a nową?

  4. Labirynt dostrajania wydajności

  5. Entity Framework generuje short zamiast int