Это довольно простой вопрос, скорее о существовании агрегатной «разностной» функции или что-то эквивалентное в PostgreSQL.Если у меня есть следующая структура для запроса:
id | value
45572 | 802033.9692
45572 | 395904.2332
45573 | 750143.7240
45573 | 114797.8068
45574 | 357421.6152
45574 | 42223.3203
45576 | 13486.1753
45576 | 961121.1070
45571 | 289127.9147
45571 | 662589.0504
45579 | 900874.5207
45579 | 235575.6564
Естественно, просто агрегировать столбец "value" для "id", используя GROUP BY
select id, sum(value)
from ...
where ...
group by id
order by id
Мой вопрос, есть ли что-то эквивалентная агрегатная функция, чтобы найти абсолютную разницу в строках «значения» по отношению к каждой паре идентификаторов.В этом примере результат, который я ищу, будет выглядеть примерно так:
id | value
45572 | 406129.736
45573 | 635345.9172
45574 | 315198.2949
45576 | 947634.9317
45571 | 373461.1357
45579 | 665298.8643
. В этом случае я гарантирую, что будет точно 2 из каждого отдельного значения идентификатора.Это оконная функция, которую я должен использовать здесь?Если так, то я не уверен, где начать.Указатель в правильном направлении наиболее эффективного способа сделать это будет высоко ценится.