Значения меток PostgreSQL - GROUP BY?
У меня есть таблица с заказами на покупку, которые хранятся в ней. Каждая строка имеет временную метку, указывающую, когда был установлен заказ. Я хотел бы иметь возможность создавать отчет с указанием количества покупок каждый день, месяц или год. Я решил, что сделаю простой SELECT COUNT (xxx) FROM tbl_orders GROUP BY tbl_orders.purchase_time и получит значение, но оказывается, что я не могу GROUP BY столбец отметки времени.
Есть ли другой способ сделать это? Мне идеально понравилось бы гибкое решение, чтобы я мог использовать любой таймфрейм, который мне нужен (ежечасно, ежемесячно, еженедельно и т.д.) Спасибо за любые предложения, которые вы можете дать!
Ответы
Ответ 1
Группирование по столбцу timestamp отлично подходит для меня здесь, имея в виду, что даже различие в 1 микросекунду предотвратит объединение двух строк.
Чтобы группировать более крупные периоды времени, группируйте по выражению в столбце временной метки, который возвращает соответствующее усеченное значение. date_trunc
может быть здесь полезен, а может to_char
.
Ответ 2
Это делает трюк без функции date_trunc (легче читать).
select created_on::DATE from users group by created_on::DATE
То, что мы делаем здесь, - это отличное исходное значение в DATE, отображающее временные данные в этом значении несущественным.