Выберите разницу между рядами (Postgres) - PullRequest
4 голосов
/ 21 августа 2010

Я собираю "лайк" фейсбука, который подсчитывает URL с течением времени. каждый час я проверяю счетчик «как» и вставляю его в строку с меткой времени. Как я могу получить разницу между новой строкой и строкой предыдущего часа?

например,

  1. вставить всего = 5 для идентификатора = 1 в 14:00
  2. вставить всего = 12, diff_since_last = 7 для идентификатора = 1 в 15:00

спасибо!

Ответы [ 2 ]

6 голосов
/ 21 августа 2010

Это должно сделать это.

SELECT id, 
       total, 
       total - lag(total) over (partition by id order by timestamp_column) as diff_since_last
FROM the_table_with_no_name
0 голосов
/ 02 августа 2013

Когда я попробовал решение a_horse_with_no_name, мне пришлось удалить часть 'section by id', чтобы получить результат (я использую PG 9.2)

SELECT id, total, total - lag (total) over (упорядочить по метке времени) как diff_since_last FROM the_table_with_no_name

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