Почему функция lag () не выдает правильный вывод в pgAdmin4 и postgresql10.5 - PullRequest
0 голосов
/ 12 декабря 2018

Хотя этому блогу 3 1/2 года, я был бы признателен за разъяснение.Это сообщение в блоге ТОЧНО объясняет проблему, с которой я сталкиваюсь (и также предоставляет элегантный ответ).

https://blog.jooq.org/2015/05/12/use-this-neat-window-function-trick-to-calculate-time-differences-in-a-time-series/

Поэтому я скопировал синтаксис SQL с именем таблицы в pgAdmin 4и добавил новый столбец с именем «delta» в мою таблицу и выполнил запрос.Однако ответ, который я получил, не был близок, значения в «delta» - это все нули (00:00:00) и мой эквивалентный столбец «ts» (у меня есть столбец с именем «utc_timestamp» - отформатированный как «отметка времени с часовым поясом»)') также отображаются разные значения - «2018-10-02» 17: 00: 00-07 »вместо исходного значения ->« 2018-10-03 01: 47: 30-07 ».Моя версия PostgreSQL 10.5 и выполняла запрос в pgAdmin 4.

Единственное различие, которое я обнаружил, состояло в том, что столбец примера ts имеет тип данных timestamp, тогда как мой столбец utc_timestamp имеет тип данных timestamp.с часовым поясом '

Это SQL, который я адаптировал из блога и использовал pgAdmin 4 для его запуска:

SELECT
utc_timestamp,
utc_timestamp 
    – lag(utc_timestamp, 1) OVER (ORDER BY utc_timestamp) delta
FROM newtable1
ORDER BY utc_timestamp;

Что я делаю не так?

...