Я использую Postgresql 9, и я сражаюсь с подсчетом и группировкой, когда никакие строки не подсчитываются.Группировка по дате, с 0, когда count() не дает строк
Давайте предположим следующую схему:
create table views {
date_event timestamp with time zone ;
event_id integer;
}
Давайте представим себе следующее содержание:
2012-01-01 00:00:05 2
2012-01-01 01:00:05 5
2012-01-01 03:00:05 8
2012-01-01 03:00:15 20
Я хочу группы по часам, и подсчитать количество строк. Я хотел бы получить следующее:
2012-01-01 00:00:00 1
2012-01-01 01:00:00 1
2012-01-01 02:00:00 0
2012-01-01 03:00:00 2
2012-01-01 04:00:00 0
2012-01-01 05:00:00 0
.
.
2012-01-07 23:00:00 0
Я имею в виду, что для каждого интервала временного диапазона, подсчитать количество строк в моей таблице, дата соответствует, в противном случае, я возвращаю строку со счетчиком на нуле.
Следующие, безусловно, не будут работать (будут спрятать только линии с подсчитанными линиями> 0).
SELECT extract (hour from date_event),count(*)
FROM views
where date_event > '2012-01-01' and date_event <'2012-01-07'
GROUP BY extract (hour from date_event);
Пожалуйста, обратите внимание, я, возможно, также необходимо сгруппировать по минуту, или час, или день, или месяц, или год (несколько запросов, возможно, конечно).
Я могу использовать простой старый sql, и так как моя таблица просмотров может быть очень большой (> 100M записей), я стараюсь сохранить производительность в памяти.
Как это можно достичь?
Спасибо!
Спасибо Vinesh. Однако это не работает (временная метка при 0 не дается), а>> и < should be > = и <=. – SCO