おそらくこれは以前に尋ねられたことがありますが、私にはわかりません。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と日付の電話クリックイベントカウントが保持されます。
複数の日付範囲を持つすべての利用可能なindustry_idのこれらのクリックを条件としてカウントすることはできますか?この出力が欲しいです:
------------------------------------------------
industry_id | today | yesterday | last 3 days |
------------------------------------------------
1 | 19 | 12 | 46 |
------------------------------------------------
2 | 35 | 0 | 42 |
------------------------------------------------
3 | 0 | 4 | 4 |
------------------------------------------------
4 | 0 | 22 | 22 |
------------------------------------------------
日付によるパーティションでカウントを使用しようとしましたが、どこにも行きませんでした。1つのクエリでこのデータを選択することはできますか?追加の利点は、今日、昨日、3月、2月、1月など、前の月を日付範囲として指定できることです。
更新:現在の月、前の月、前の月を日付範囲として定義するためにフィドルを更新しました。SQLフィドル:http ://sqlfiddle.com/#!15/855e0/ 46
PostgreSQL 9.3を使用していますが、まもなく移行するため、9.4ソリューションは大歓迎です。
date
型の列であると想定しています。その仮定はdate
timestamp