PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

अगले रैंक (Postgresql) के LAG () / LEAD ()

आपको lag() . का उपयोग करना चाहिए और lead() डेटासेट पर फ़ंक्शन प्रति जोड़ी एक पंक्ति में कम हो जाते हैं (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. पोस्टग्रेज में OPENXML

  2. डेटा पीढ़ी और हार्डवेयर गुणवत्ता

  3. IP श्रेणियों पर क्वेरी के लिए PostgreSQL अनुक्रमणिका का उपयोग नहीं किया गया

  4. Postgres सरणी में अतिव्यापी तत्वों की संख्या की गणना करें

  5. SQLAlchemy में PostgresSQL INTERVAL का उपयोग करना जहां अवधि गतिशील रूप से DB में संग्रहीत होती है और एक पैरामीटर नहीं है