Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 как получить разность с предыдущей строкой?  [new]
К.К2
Member

Откуда:
Сообщений: 67
Добрый день.

Есть поле в выборке
csum

как можно получить разность csum текущей строки и предыдущей для каждой строки выборки?
16 июл 20, 10:18    [22168364]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
К.К2
Member

Откуда:
Сообщений: 67
Например
SELECT 1 id,  10 csum 
UNION ALL
SELECT 3 id,  15
UNION ALL
SELECT 4 id,  17
UNION ALL
SELECT 5 id,  19
UNION ALL
SELECT 7 id, 25
16 июл 20, 10:20    [22168365]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
К.К2
Member

Откуда:
Сообщений: 67
надо получить

1;10;0
3;15;5
4;17;2
5;19;2
7;25;6
16 июл 20, 10:21    [22168367]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1122
lag(csum) over()
16 июл 20, 12:01    [22168469]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
К.К2
Member

Откуда:
Сообщений: 67
Melkij
lag(csum) over()


Супер!

То что надо!

Спасибо!
16 июл 20, 13:29    [22168568]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 557
Melkij
lag(csum) over()

а по ссылке то про lag() ни слова
тут есть
17 июл 20, 00:28    [22168929]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4233
Алексей Роза,

как же не слова там концепция рассказывается а в конце написано
More details about window functions can be found in Section 4.2.8, Section 9.21, Section 7.2.5, and the SELECT reference page.
куда и надо за доп инфой смотреть.
17 июл 20, 09:15    [22169010]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 557
Maxim Boguk, ну в секции 9.21 есть целая одна строчка:
автор
lag(value anyelement [, offset integer [, default anyelement ]]) same type as value returns value evaluated at the row that is offset rows before the current row within the partition; if there is no such row, instead return default (which must be of the same type as value). Both offset and default are evaluated with respect to the current row. If omitted, offset defaults to 1 and default to null

и всё.

Сообщение было отредактировано: 17 июл 20, 11:25
17 июл 20, 11:28    [22169121]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4233
Алексей Роза
Maxim Boguk, ну в секции 9.21 есть целая одна строчка:
автор
lag(value anyelement [, offset integer [, default anyelement ]]) same type as value returns value evaluated at the row that is offset rows before the current row within the partition; if there is no such row, instead return default (which must be of the same type as value). Both offset and default are evaluated with respect to the current row. If omitted, offset defaults to 1 and default to null

и всё.


А что вам еще то надо?
Документация это не учебник по основам sql.
17 июл 20, 13:26    [22169217]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 557
а мне основы и не надо
примеры надо
вот и вот
фигасе "основы"
17 июл 20, 13:44    [22169235]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4233
Алексей Роза
а мне основы и не надо
примеры надо
вот и вот
фигасе "основы"


если вы знаете как window functions в общем случае работают
вам примеры для конкретно каждой из них не нужны.
Если не знаете - надо не примеры для lag смотреть а изучать как они в общем работают.
17 июл 20, 13:54    [22169248]     Ответить | Цитировать Сообщить модератору
 Re: как получить разность с предыдущей строкой?  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 557
нужно, обязательно нужно
только вот из тех ссылок непонятно, как данную задачу решать (через lag())
а из моих понятно
вот ещё (про то как они "в общем работают")

Сообщение было отредактировано: 17 июл 20, 20:05
17 июл 20, 20:06    [22169496]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить