Cela a probablement déjà été demandé, mais je ne peux pas le comprendre. J'ai une phone_clicks
table (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);
Ce tableau contient le nombre d'événements de clics téléphoniques pour plusieurs industries_id et dates.
Est-il possible de compter ces clics pour tous les ID_industrie disponibles avec plusieurs plages de dates comme conditions? Je voudrais avoir cette sortie:
------------------------------------------------
industry_id | today | yesterday | last 3 days |
------------------------------------------------
1 | 19 | 12 | 46 |
------------------------------------------------
2 | 35 | 0 | 42 |
------------------------------------------------
3 | 0 | 4 | 4 |
------------------------------------------------
4 | 0 | 22 | 22 |
------------------------------------------------
J'ai essayé d'utiliser le comptage avec la partition par date, mais je suis arrivé nulle part. Est-il possible de sélectionner ces données dans une seule requête? Un avantage supplémentaire serait de pouvoir spécifier les mois précédents comme des plages de dates: aujourd'hui, hier, mars, février, janvier, etc.
MISE À JOUR : J'ai mis à jour le violon pour définir le mois en cours, les mois précédents et le mois précédent comme plages de dates. SQL Fiddle: http://sqlfiddle.com/#!15/855e0/46
J'utilise PostgreSQL 9.3, mais les solutions 9.4 sont les bienvenues, car nous y migrerons bientôt.
la source
date
s'agit d'une colonne de typedate
et nontimestamp
. Cette hypothèse m'a parfois brûlé