可能以前有人问过这个问题,但我无法弄清楚。我有一张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);
该表包含多个行业ID和日期的电话点击事件计数。
是否可以将具有多个日期范围的所有可用行业ID的这些点击计为条件?我想要这样的输出:
------------------------------------------------
industry_id | today | yesterday | last 3 days |
------------------------------------------------
1 | 19 | 12 | 46 |
------------------------------------------------
2 | 35 | 0 | 42 |
------------------------------------------------
3 | 0 | 4 | 4 |
------------------------------------------------
4 | 0 | 22 | 22 |
------------------------------------------------
我试过按日期对分区进行计数,但是没有结果。是否可以在一个查询中选择此数据?额外的好处是可以指定日期范围内的前几个月:今天,昨天,3月,2月,1月等
更新:我已经更新了小提琴,以将当前月份,前几个月和上一个之前的月份定义为日期范围。SQL小提琴:http ://sqlfiddle.com/#!15/855e0/ 46
我使用的是PostgreSQL 9.3,但欢迎使用9.4解决方案,因为我们会尽快迁移到它。
date
是类型为date
not 的列timestamp
。这种假设有时使我