Я хочу преобразовать таблицу 15-минутных интервалов в базе данных postgres в часовые интервалы, а также суммировать все значения в других столбцах в соответствии с этим. Как мне это сделать? какой будет запрос?

Пример:

timestamp                    count
"2015-01-05 12:00:00"          35
"2015-01-05 12:15:00"       45
"2015-01-05 12:30:00"       23
"2015-01-05 12:45:00"       23
"2015-01-05 01:00:00"       45
"2015-01-05 01:15:00"       12
"2015-01-05 01:30:00"       11
"2015-01-05 01:45:00"        56

Я хочу, чтобы выходная таблица была

timestamp                  count
2015-01-05 12:00:00         126
2015-01-05 01:00:00         124
1
swat 31 Янв 2015 в 00:13

2 ответа

Легко, в PostgreSQL:

SELECT date_trunc('hour', timestamp_col) as ts_hour, sum(count_col) 
FROM counts_table
GROUP BY ts_hour
ORDER BY ts_hour;
3
a_horse_with_no_name 31 Янв 2015 в 03:08

FuzzChef дал хороший ответ, но вам может потребоваться изменить порядок с псевдонима на фактический date_trunc, как в:

SELECT date_trunc('hour', timestamp_col) as ts_hour, sum(count_col) FROM counts_table 
GROUP BY date_trunc('hour', timestamp_col) 
ORDER BY date_trunc('hour', timestamp_col) 
;

Кроме того, если вы просто хотите, чтобы отображался ЧАС, используйте extract, например:

SELECT extract('hour' from timestamp_col) as ts_hour, sum(count_col) FROM counts_table 
GROUP BY extract('hour' from timestamp_col) 
ORDER BY extract('hour' from timestamp_col) 
;
1
Walker Farrow 31 Янв 2015 в 02:40
1
Ссылки на имена выходных столбцов разрешены в GROUP BY и ORDER BY и фактически имеют приоритет над именами входных столбцов. В этом отношении ответ FuzzyChef лучше. Подробности здесь. Ваш второй запрос будет объединять несколько дней вместе, что, скорее всего, не предназначено.
 – 
Erwin Brandstetter
1 Фев 2015 в 06:50
Большое спасибо. Это было действительно полезно. Если есть идентификатор, который определяет каждый из них, то я просто добавляю идентификатор в поле SELECT, верно?
 – 
swat
2 Фев 2015 в 19:07
Да, конечно, и тогда вам нужно будет сделать группу по этому - т.е. добавить его в существующую группу по полю
 – 
Walker Farrow
2 Фев 2015 в 20:58