Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Как работает запрос OVER partition by + order by  [new]
polin11
Member

Откуда:
Сообщений: 161
Есть тестовая таблица

create table test(
id serial not null,
name text null,
price int, 
dept int 
)

INSERT into test values(1, 'A', 10, 1)
INSERT into test values(2, 'A', 20, 1)
INSERT into test values(3, 'A', 30, 2)
INSERT into test values(4, 'B', 10, 1)
INSERT into test values(5, 'B', 20, 2)


Запрос

select name, sum(price) OVER( partition by dept)
from test
order by name

возвращает сумму подсчитанную для каждого поля dept - тут все понятно.

Почему запрос с order by
select name, sum(price) OVER( partition by dept order by name)
from arm
order by name


возвращает другое значение сумм, ведь должна меняться только сортировка,
по какой логике выполняется этот запрос, как считается сумма?

Сообщение было отредактировано: 28 апр 21, 11:35
28 апр 21, 11:40    [22315513]     Ответить | Цитировать Сообщить модератору
 Re: Как работает запрос OVER partition by + order by  [new]
court
Member

Откуда:
Сообщений: 2274
polin11
Почему запрос с order by
это накопительный итог
28 апр 21, 11:43    [22315517]     Ответить | Цитировать Сообщить модератору
 Re: Как работает запрос OVER partition by + order by  [new]
Guzya
Member

Откуда:
Сообщений: 720
Оконные функции с «форточкой» или как пользоваться фреймом

Там есть "Давайте начнем с простого момента — разницы функции SUM с указанием сортировки и без нее"
28 апр 21, 15:44    [22315712]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить