Разница между последовательными строками, но разными столбцами - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужно найти разницу между двумя последовательными строками, но разными столбцами. Я написал запрос следующим образом

select ticketid,createddate,expirydate ,TIMESTAMP_DIFF(
    timestamp_seconds(expirytimestamp),
    timestamp_seconds(
      lag(createdtimestamp) over (partition by ticketid order by ticketid)
    ),
    Minute
  ) AS result from table

Ожидаемый результат

TicketID    createdtimestamp    Expirytimestamp created date    Expirydate  Expected result in minutes
121 1574170201  1574328843  2019-12-01 1:25:05  2019-12-01 7:24:53  NULL
121 1574170202  1574372109  2019-12-01 2:55:02  2019-12-01 8:54:50  300
121 1574256733  1574415375  2019-12-01 4:24:59  2019-12-01 10:24:47 240
121 1574285577  1574458641  2019-12-01 5:54:56  2019-12-01 11:54:44 300
121 1574328843  1574501907  2019-12-01 7:24:53  2019-12-01 13:24:41 240
121 1574372109  1574545173  2019-12-01 8:54:50  2019-12-01 14:54:38 300
121 1574415375  1574588439  2019-12-01 10:24:47 2019-12-01 16:24:35 240

Может кто-нибудь предложить. Это не дает желаемого результата. Данные не найдены в этом запросе

Вот фактический результат, который я получил

TicketID    createdtimestamp    Expirytimestamp created date    Expirydate  Expected result in minutes
121 1574170200  1574170680  2019-11-19 13:30:00 2019-11-19 13:38:00 null
121 1574170201  1574173801  2019-11-19 13:30:01 2019-11-19 14:30:01 60
121 1574170201  1574173801  2019-11-19 13:30:01 2019-11-19 14:30:01 60
121 1574170201  1574173801  2019-11-19 13:30:01 2019-11-19 14:30:01 60
121 1574170202  1574170512  2019-11-19 13:30:02 2019-11-19 13:35:12 5
121 1574170202  1574170512  2019-11-19 13:30:02 2019-11-19 13:35:12 5
121 1574170202  1574170902  2019-11-19 13:30:02 2019-11-19 13:41:42 11
121 1574256733  1574257433  2019-11-20 13:32:13 2019-11-20 13:43:53 1453
121 1574343249  1574343949  2019-11-21 13:34:09 2019-11-21 13:45:49 1453
121 1574429680  1574430380  2019-11-22 13:34:40 2019-11-22 13:46:20 1452
121 1574516458  1574517158  2019-11-23 13:40:58 2019-11-23 13:52:38 1457

1 Ответ

1 голос
/ 06 февраля 2020

Это помещает вещи в произвольный порядок:

lag(createdtimestamp) over (partition by ticketid order by ticketid)

Я думаю, что вы хотите:

lag(createdtimestamp) over (partition by ticketid order by createdtimestamp)

Обратите внимание на разницу в order by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...