Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Permintaan Oracle SQL:Ambil nilai terbaru per grup berdasarkan waktu

Mengingat data ini ...

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>

... kueri berikut memberikan apa yang Anda inginkan ...

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>

Sehubungan dengan persyaratan tambahan Anda, Anda dapat menerapkan filter tambahan ke klausa WHERE luar. Demikian pula, Anda dapat menggabungkan tabel tambahan ke tampilan sebaris seperti tabel lainnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih semua kolom dari tabel, ditambah kolom tambahan seperti ROWNUM?

  2. Memasukkan beberapa baris ke Oracle

  3. Oracle SQL plus bagaimana cara mengakhiri perintah dalam file SQL?

  4. Permintaan Pembaruan Oracle menggunakan Gabung

  5. Bagaimana Mengembalikan ResultSet dari Stored Procedure di Oracle?