Подтвердить что ты не робот

Значения меток PostgreSQL - GROUP BY?

У меня есть таблица с заказами на покупку, которые хранятся в ней. Каждая строка имеет временную метку, указывающую, когда был установлен заказ. Я хотел бы иметь возможность создавать отчет с указанием количества покупок каждый день, месяц или год. Я решил, что сделаю простой SELECT COUNT (xxx) FROM tbl_orders GROUP BY tbl_orders.purchase_time и получит значение, но оказывается, что я не могу GROUP BY столбец отметки времени.

Есть ли другой способ сделать это? Мне идеально понравилось бы гибкое решение, чтобы я мог использовать любой таймфрейм, который мне нужен (ежечасно, ежемесячно, еженедельно и т.д.) Спасибо за любые предложения, которые вы можете дать!

4b9b3361

Ответ 1

Группирование по столбцу timestamp отлично подходит для меня здесь, имея в виду, что даже различие в 1 микросекунду предотвратит объединение двух строк.

Чтобы группировать более крупные периоды времени, группируйте по выражению в столбце временной метки, который возвращает соответствующее усеченное значение. date_trunc может быть здесь полезен, а может to_char.

Ответ 2

Это делает трюк без функции date_trunc (легче читать).

select created_on::DATE from users group by created_on::DATE

То, что мы делаем здесь, - это отличное исходное значение в DATE, отображающее временные данные в этом значении несущественным.