PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Последователност по дата, добавете дата преди и дата след postgresql с подзаявка

Използвайте прозоречни функции .

select 
    *, 
    lag(timestamp) over wa time_prev, 
    lead(timestamp) over wa time_next,
    to_char(timestamp, 'yyyymmdd') || to_char(row_number() over wd, 'fm0009') time_sequence
from db1
window 
    wa as (partition by vehicle_id order by objectid),
    wd as (partition by vehicle_id, timestamp::date order by objectid);


 objectid | vehicle_id |      timestamp      |      time_prev      |      time_next      | time_sequence 
----------+------------+---------------------+---------------------+---------------------+---------------
        1 |          1 | 2009-06-01 11:57:43 |                     | 2009-06-01 11:09:16 | 200906010001
        4 |          1 | 2009-06-01 11:09:16 | 2009-06-01 11:57:43 | 2009-06-01 10:16:28 | 200906010002
        6 |          1 | 2009-06-01 10:16:28 | 2009-06-01 11:09:16 | 2009-06-01 09:33:01 | 200906010003
       11 |          1 | 2009-06-01 09:33:01 | 2009-06-01 10:16:28 | 2009-06-01 11:30:19 | 200906010004
       12 |          1 | 2009-06-01 11:30:19 | 2009-06-01 09:33:01 |                     | 200906010005
        2 |          2 | 2009-06-01 10:42:19 |                     | 2009-06-01 11:02:23 | 200906010001
        3 |          2 | 2009-06-01 11:02:23 | 2009-06-01 10:42:19 | 2009-06-01 10:32:19 | 200906010002
        7 |          2 | 2009-06-01 10:32:19 | 2009-06-01 11:02:23 | 2009-06-01 09:20:31 | 200906010003
        9 |          2 | 2009-06-01 09:20:31 | 2009-06-01 10:32:19 | 2009-06-01 11:56:23 | 200906010004
       13 |          2 | 2009-06-01 11:56:23 | 2009-06-01 09:20:31 |                     | 200906010005
        5 |          3 | 2009-06-01 11:56:47 |                     | 2009-06-01 10:52:19 | 200906010001
        8 |          3 | 2009-06-01 10:52:19 | 2009-06-01 11:56:47 | 2009-06-01 11:06:39 | 200906010002
       10 |          3 | 2009-06-01 11:06:39 | 2009-06-01 10:52:19 |                     | 200906010003
(13 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. Коя е най-добрата PostgreSQL рамка за висока достъпност? PAF срещу repmgr срещу инфографика на Patroni

  2. Изчисляване на сумата на поле въз основа на други колони на таблицата за присъединяване

  3. Postgres bytea грешка при свързване на null към подготвени изрази

  4. Изберете клетки от ред като нови колони

  5. Как да представим много подобни атрибути на обект в база данни?