SQL ежечасное агрегирование данных в postgresql, но в указанный день - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть те же данные таблицы и запрос из этой записи , но с небольшими измененными данными.

Моя таблица:

create table myt (t timestamp, v int );
insert into myt values
('2011/12/31 00:00', 10),
('2011/12/31 01:00', 10),
('2011/12/31 23:00', 10),
('2012/01/01 00:30', 5),
('2012/01/01 01:00', 10),
('2012/01/01 01:40', 10),
('2012/01/01 02:00', 20)

Запрос:

select /*min(t), max(t),*/
  date_trunc('hour', t - interval '1 minute') as interv_start,
  date_trunc('hour', t - interval '1 minute')  + interval '1 hours' as interv_end,
 sum(v)
  from myt 
    where t between '2011/12/31 00:00' and '2012/01/01 02:00'
    group by date_trunc('hour', t - interval '1 minute')
order by interv_start

И результат запроса:

interv_start            interv_end              sum
2011-12-30T23:00:00Z    2011-12-31T00:00:00Z    10
2011-12-31T00:00:00Z    2011-12-31T01:00:00Z    10
2011-12-31T22:00:00Z    2011-12-31T23:00:00Z    10
2012-01-01T00:00:00Z    2012-01-01T01:00:00Z    15
2012-01-01T01:00:00Z    2012-01-01T02:00:00Z    30

В первый ряд, есть результат 2011-12-30T23: 00: 00Z, который не то, что я хотел. Как мне удалить его?

SQL Демо Fiddle здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...