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

Zapytanie Oracle SQL:pobierz najnowsze wartości na grupę na podstawie czasu

Biorąc pod uwagę te dane ...

SQL> select * from qtys
  2  /

        ID TS                      QTY
---------- ---------------- ----------
         1 2010-01-04 11:00        152
         2 2010-01-04 11:00        210
         1 2010-01-04 10:45        132
         2 2010-01-04 10:45        318
         4 2010-01-04 10:45        122
         1 2010-01-04 10:30          1
         3 2010-01-04 10:30        214
         2 2010-01-04 10:30       5515
         4 2010-01-04 10:30        210

9 rows selected.

SQL>

... poniższe zapytanie daje to, czego chcesz ...

SQL> select x.id
  2         , x.ts as "DATE"
  3         , x.qty as "QUANTITY"
  4  from (
  5      select id
  6             , ts
  7             , rank () over (partition by id order by ts desc) as rnk
  8             , qty
  9      from qtys ) x
 10  where x.rnk = 1
 11  /

        ID DATE               QUANTITY
---------- ---------------- ----------
         1 2010-01-04 11:00        152
         2 2010-01-04 11:00        210
         3 2010-01-04 10:30        214
         4 2010-01-04 10:45        122

SQL>

Jeśli chodzi o dodatkowe wymagania, możesz zastosować dodatkowe filtry do zewnętrznej klauzuli WHERE. Podobnie możesz dołączyć dodatkowe tabele do widoku wbudowanego, tak jak do każdej innej tabeli.



  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 wybrać kolumny z tabeli, które nie mają wartości null?

  2. Jak zadeklarować i wyświetlić zmienną w Oracle

  3. Oracle kopiuje dane do innej tabeli

  4. Jak rozwiązać ORA-29280:nieprawidłowa ścieżka do katalogu

  5. Perl DBI - uruchom skrypt SQL z wieloma instrukcjami