Возможно, об этом уже спрашивали, но я не могу понять. У меня есть phone_clicks
таблица (sql fiddle http://sqlfiddle.com/#!15/855e0/1 )
CREATE TABLE phone_clicks (
id integer NOT NULL,
date date NOT NULL,
industry_id integer NOT NULL,
clicks integer DEFAULT 0 NOT NULL
);
insert into phone_clicks(id, date, industry_id, clicks)
values
(1, '2015-03-16', 1, 15),
(2, '2015-03-16', 2, 7),
(3, '2015-03-16', 3, 0),
(4, '2015-03-17', 1, 12),
(5, '2015-03-17', 3, 4),
(6, '2015-03-17', 4, 22),
(7, '2015-03-18', 1, 19),
(8, '2015-03-18', 2, 35);
В этой таблице хранится количество событий щелчков по телефону для нескольких идентификаторов и дат, заданных отраслевым кодом.
Можно ли считать эти клики для всех доступных отраслевых идентификаторов с несколькими диапазонами дат в качестве условий? Я хотел бы иметь этот вывод:
------------------------------------------------
industry_id | today | yesterday | last 3 days |
------------------------------------------------
1 | 19 | 12 | 46 |
------------------------------------------------
2 | 35 | 0 | 42 |
------------------------------------------------
3 | 0 | 4 | 4 |
------------------------------------------------
4 | 0 | 22 | 22 |
------------------------------------------------
Я пытался использовать подсчет с разделением по дате, но ничего не получилось. Можно ли выбрать эти данные в одном запросе? Дополнительным преимуществом будет возможность указать предыдущие месяцы в качестве диапазонов дат: сегодня, вчера, март, февраль, январь и т. Д.
ОБНОВЛЕНИЕ : я обновил скрипку, чтобы определить текущий месяц, предыдущие месяцы и предыдущий месяц как диапазоны дат. SQL Fiddle: http://sqlfiddle.com/#!15/855e0/46
Я использую PostgreSQL 9.3, но решения 9.4 приветствуются, потому что мы скоро перейдем на него.
date
столбец типа,date
а неtimestamp
. Это предположение поджигало меня время от времени