Mungkin ini sudah ditanyakan sebelumnya, tetapi saya tidak bisa mengetahuinya. Saya punya phone_clicks
meja (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);
Tabel ini memuat jumlah acara klik telepon untuk beberapa industri_id dan tanggal.
Apakah mungkin untuk menghitung klik ini untuk semua industry_ids yang tersedia dengan beberapa rentang tanggal sebagai ketentuan? Saya ingin memiliki hasil ini:
------------------------------------------------
industry_id | today | yesterday | last 3 days |
------------------------------------------------
1 | 19 | 12 | 46 |
------------------------------------------------
2 | 35 | 0 | 42 |
------------------------------------------------
3 | 0 | 4 | 4 |
------------------------------------------------
4 | 0 | 22 | 22 |
------------------------------------------------
Saya sudah mencoba menggunakan penghitungan dengan partisi berdasarkan tanggal, tetapi tidak berhasil. Apakah mungkin untuk memilih data ini dalam satu permintaan? Manfaat tambahan akan dapat menentukan bulan sebelumnya sebagai rentang tanggal: hari ini, kemarin, Maret, Februari, Januari, dll
UPDATE : Saya telah memperbarui biola untuk menentukan bulan saat ini, bulan-bulan sebelumnya dan bulan pra-sebelumnya sebagai tanggal berkisar. SQL Fiddle: http://sqlfiddle.com/#!15/855e0/46
Saya menggunakan PostgreSQL 9.3, tetapi solusi 9.4 dipersilahkan, karena kami akan segera bermigrasi ke sana.
sumber
date
adalah kolom tipedate
dan bukantimestamp
. Asumsi itu telah membakar saya pada waktu