Мне нужно вычислить разницу значений между самыми последними и последними самыми последними строками в таблице Postgres, сгруппированной по категории.Вот таблица:
category timestamp value
---------- ---------- -----
A 2018-04-09 5
B 2018-04-09 3
A 2018-04-12 2
A 2018-04-15 4
B 2018-04-25 8
C 2018-04-16 7
Запрос должен сгруппироваться по категориям, упорядоченным по отметке времени (по убыванию), и вычислить разницу значений в двух верхних строках.Поскольку для C существует только одна строка, ее следует игнорировать.Таким образом, запрос должен возвращать следующий набор результатов:
category diff
-------- ----
A 2
B 5
Таким образом, строки сгруппированы по категориям, а разница значений берется для тех категорий, для которых существует как минимум две или более строк.В то время как категория C игнорируется, поскольку в ней нет еще двух строк.Строки расположены в порядке убывания метки времени.Наконец, результаты упорядочены по категориям.
Может ли Postresql сделать это за один запрос?