Postgres SQL — Суммарный 24-часовой вес для каждой строки

#postgresql

#postgresql

Вопрос:

У меня есть таблица, где я указываю дату доставки и вес. Мне нужно добавить столбец для «24-часового агрегата» — смотреть вперед на 12 часов и смотреть назад на 12 часов для каждой строки и суммировать вес. Что-то вроде 12-часовой прокатки веса.

Вот что я пробовал, но ничего не работает / не возвращает:

 select delivered_time, 
       (select  Sum(Gross_Weight) 
       from loads_table  
       where delivered_time > delivered_time - interval '12 hours' 
         and delivered_time < delivered_time   interval '12 hours') as sumweight 
from loads_table 
group by delivered_time
 

Я попробовал пару разных запросов, но новичок в SQL, Postgres и т. Д. … И испытывал трудности. Я в некотором роде жокей Excel.

Итак, мне нужно суммировать вес за предыдущие 12 часов и последующие 12 часов для каждой строки и поместить его в столбец под названием «суммарный вес».

Ответ №1:

Может быть, вы ищете функцию окна скользящей суммы?

 select <other columns>,
       sum(gross_weight) over (order by delivered_time range between '12 hours' preceding and '12 hours' following) as sumweight
from loads_table
order by delivered_time;
 

Комментарии:

1. Кажется, что это движется в правильном направлении a_horse_with_no_name, но когда я использую запрос, который вы предложили выше, я получаю сообщение об ошибке: ошибка SQL [0A000]: ОШИБКА: ПРЕДЫДУЩИЙ ДИАПАЗОН поддерживается только с НЕОГРАНИЧЕННЫМ Не уверен, что это значит, но если бы вы могли предложить настройку, я был бы очень признателен.