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

LAG () / LEAD () của thứ hạng tiếp theo (Postgresql)

Bạn nên sử dụng lag()lead() các hàm trên tập dữ liệu được giảm xuống một hàng cho mỗi cặp (client_id, rank) :

select 
    client_id, order_id, product_id, 
    t.year, rank, prev_year, next_year
from my_table t
join (
    select distinct on (client_id, rank)
        client_id, rank, year, 
        lag(year) over w as prev_year, 
        lead(year) over w as next_year
    from my_table
    window w as (partition by client_id order by rank)
    order by 1, 2, 3 desc
    ) s using (client_id, rank)
order by client_id, rank

 client_id | order_id | product_id | year | rank | prev_year | next_year 
-----------+----------+------------+------+------+-----------+-----------
         1 |        1 |     212346 | 1995 |    1 |           |      1998
         1 |        1 |     912346 | 1995 |    1 |           |      1998
         1 |        1 |     111345 | 1995 |    1 |           |      1998
         1 |        2 |     133368 | 1998 |    4 |      1995 |      2005
         1 |        2 |     233368 | 1998 |    4 |      1995 |      2005
         1 |        3 |     412341 | 2005 |    6 |      1998 |          
         2 |       55 |     312344 | 1995 |    1 |           |      1999
         2 |       57 |     812343 | 1999 |    2 |      1995 |          
(8 rows)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật hàng loạt / hàng loạt / nâng cấp trong PostgreSQL

  2. Làm cách nào để đọc nội dung của tệp .sql thành tập lệnh R để chạy truy vấn?

  3. Làm cách nào để ngăn Postgres nội dòng một truy vấn con?

  4. Rails 3.2 - phương thức không xác định `where 'for # <Array:... - Truy vấn Model.where ()

  5. Các tính năng mới tốt nhất trong PostgreSQL 14