PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Quá nhiều thứ tự theo, tối đa, truy vấn phụ đối với trí tuệ của tôi

Bạn có thể sử dụng row_number() hai lần:

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

Nhưng nếu bảng tiếp tục phát triển, điều này sẽ hoạt động không tốt. Bạn có thể thêm một bảng lịch sử như OddsHistory và di chuyển các Odds lỗi thời vào đó. Khi chỉ có Tỷ lệ cược mới nhất trong bảng Tỷ lệ cược, truy vấn của bạn trở nên đơn giản hơn nhiều.

Ví dụ trực tiếp tại 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. Postgres nối hoặc đặt từng phần tử (nếu không tồn tại) của một mảng thành một cột mảng

  2. Sử dụng loại điểm với PostgreSQL và JPA / Hibernate

  3. Erlang và PostgreSQL

  4. Tôi có thể sử dụng từ khóa Postgres làm bí danh trong danh sách được chọn không?

  5. LỖI:dữ liệu bổ sung sau cột dự kiến ​​cuối cùng khi sử dụng PostgreSQL COPY