PostgreSQL - значения отметки времени GROUP BY? - PullRequest
18 голосов
/ 26 июля 2011

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

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

Ответы [ 2 ]

19 голосов
/ 07 мая 2013

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

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

// updated September 2018 (thanks to @wegry)
select created_on::DATE as co from users group by co

То, что мы здесь делаем, - это приведение исходного значения к DATE, что делает данные времени в этом значении несущественными.

13 голосов
/ 26 июля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...