Я хочу преобразовать таблицу 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
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;
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)
;
Похожие вопросы
Связанные вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.
GROUP BY
иORDER BY
и фактически имеют приоритет над именами входных столбцов. В этом отношении ответ FuzzyChef лучше. Подробности здесь. Ваш второй запрос будет объединять несколько дней вместе, что, скорее всего, не предназначено.