Wahrscheinlich wurde das schon einmal gefragt, aber ich kann es nicht herausfinden. Ich habe einen phone_clicks
Tisch (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);
Diese Tabelle enthält die Anzahl der Telefonklickereignisse für mehrere Branchen-IDs und -Daten.
Können diese Klicks für alle verfügbaren Branchen-IDs mit mehreren Datumsbereichen als Bedingungen gezählt werden? Ich möchte diese Ausgabe haben:
------------------------------------------------
industry_id | today | yesterday | last 3 days |
------------------------------------------------
1 | 19 | 12 | 46 |
------------------------------------------------
2 | 35 | 0 | 42 |
------------------------------------------------
3 | 0 | 4 | 4 |
------------------------------------------------
4 | 0 | 22 | 22 |
------------------------------------------------
Ich habe versucht, mit der Partition nach Datum zu zählen, bin aber nicht weitergekommen. Ist es möglich, diese Daten in einer Abfrage auszuwählen? Ein zusätzlicher Vorteil wäre, frühere Monate als Datumsbereiche angeben zu können: heute, gestern, März, Februar, Januar usw
UPDATE : Ich habe die Geige aktualisiert, um den aktuellen Monat, die vorherigen Monate und den vorherigen Monat als Datumsbereiche zu definieren. SQL Fiddle: http://sqlfiddle.com/#!15/855e0/46
Ich verwende PostgreSQL 9.3, aber 9.4-Lösungen sind willkommen, da wir bald darauf migrieren werden.
quelle
date
es sich um eine Spalte vom Typdate
und nicht um eine Spalte vom Typ handelttimestamp
. Diese Annahme hat mich manchmal verbrannt