Как выполнить группировку по часам с шагом в 2 часа в postgresql?

Пользователь

от fidel , в категории: SQL , 8 месяцев назад

Как выполнить группировку по часам с шагом в 2 часа в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от francis_schuster , 8 месяцев назад

@fidel 

Для выполнения группировки по часам с шагом в 2 часа в PostgreSQL можно использовать функцию date_trunc и оператор SQL EXTRACT.


Вот пример запроса:

1
2
3
4
5
SELECT date_trunc('hour', your_timestamp_column) + 
       (((EXTRACT(hour FROM your_timestamp_column)::integer / 2)::integer) * interval '2 hours') as grouped_hour
FROM your_table
GROUP BY grouped_hour
ORDER BY grouped_hour;


Здесь вместо your_timestamp_column и your_table вы должны использовать свою таблицу и столбец с временными метками, по которым вам нужно выполнить группировку.


Функция date_trunc('hour', your_timestamp_column) используется для обрезки времени до начала каждого часа. Затем мы добавляем вычисленное количество часов, округленное до ближайшего меньшего числа, чтобы выполнить группировку с шагом в 2 часа. В данном случае шаг составляет 2 часа, так что мы умножаем на интервал '2 hours'.


Вы можете изменить интервал или шаг группировки, изменив соответствующие значения в запросе.


Результат будет содержать сгруппированные значения времени в столбце grouped_hour.