PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Terlalu banyak pesanan berdasarkan, maks, subkueri untuk kecerdasan saya

Anda dapat menggunakan row_number() dua kali:

select  *
from    (
        select  *
        ,       row_number() over (partition by OT order by OI desc) as rn2
        from    (
                select  *
                ,       row_number() over (partition by EI, BI, OT 
                                           order by created_at desc) as rn1
                from    Odds
                where   EI = 1 -- for event 1
                ) sub1
        where   rn1 = 1 -- Latest row per EI, BI, OT
        ) sub2
where   rn2 = 1 -- Highest OI per OT

Tetapi jika tabel terus bertambah, ini akan berkinerja buruk. Anda dapat menambahkan tabel riwayat seperti OddsHistory, dan memindahkan Odds yang sudah usang ke sana. Ketika hanya Odds terbaru yang ada di tabel Odds, kueri Anda menjadi lebih sederhana.

Contoh langsung di SQL Fiddle.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. plpgsql - menggunakan nama tabel dinamis dalam pernyataan pernyataan

  2. Saya memiliki hasil yang berbeda dari kueri untuk COUNT('e.id') atau COUNT(e.id)

  3. Gagal menghubungkan server AWS-Postgres dengan aplikasi boot musim semi dengan hosting heroku

  4. Log Stacktrace dari Python Interpreter saat ini melalui pemicu PostgreSQL

  5. Upser massal dengan SQLAlchemy