У меня есть те же данные таблицы и запрос из этой записи , но с небольшими измененными данными.
Моя таблица:
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 здесь .