j'ai une table de réponses avec le schéma suivant:Nombre cumulé sur les dates, en rejetant certaines valeurs
CREATE TABLE Answers
([id] int, [analyst_id] int, [date] date);
Je dois « accumuler-count » combien de réponses analyste a par mois, supprimant toutes les réponses données avant une période de 3 mois après la dernière réponse. Compte tenu de ce qui suit:
INSERT INTO Answers
([id], [analyst_id], [date])
VALUES
(1, 1, '2017/01/01'),
(2, 1, '2017/02/01'), -- should be discarded
(3, 1, '2017/03/01'), -- should be discarded
(4, 1, '2017/05/01'),
(5, 1, '2017/06/01'), -- should be discarded
(6, 1, '2017/07/01'), -- should be discarded
(7, 1, '2017/08/01'),
(8, 2, '2017/01/01'),
(9, 2, '2017/04/01'),
(10, 1, '2018/02/01'),
(11, 2, '2018/03/01');
Le résultat attendu est:
analyst_id | month-year | count
-------------------------------
1 | 01/2017 | 1
1 | 02/2017 | 1
1 | 03/2017 | 1
1 | 04/2017 | 1
1 | 05/2017 | 2
1 | 06/2017 | 2
1 | 07/2017 | 2
1 | 08/2017 | 3
1 | 09/2017 | 3
1 | 10/2017 | 3
1 | 11/2017 | 3
1 | 12/2017 | 3
2 | 01/2017 | 1
2 | 02/2017 | 1
2 | 03/2017 | 1
2 | 04/2017 | 2
2 | 05/2017 | 2
2 | 06/2017 | 2
2 | 07/2017 | 2
2 | 08/2017 | 2
2 | 09/2017 | 2
2 | 10/2017 | 2
2 | 11/2017 | 2
2 | 12/2017 | 2
1 | 01/2018 | 0
1 | 02/2018 | 1
1 | 03/2018 | 1
2 | 01/2018 | 0
2 | 02/2018 | 0
2 | 03/2018 | 1
SGBD est un SQL Server 2012.
EDIT
J'ai écrit ce violon avec mon demi-courant solution: http://sqlfiddle.com/#!6/c2e82e/5
Chaque année, le compte doit être réinitialisé.
La dernière réponse est en 2017-08. Je ne comprends pas pourquoi il est rejeté selon vos règles. –
Mon mauvais. Mauvaise explication. Avant cette réponse (août), la dernière date acceptée était en juillet. La prochaine réponse acceptable sera en octobre. –
quel problème rencontrez-vous dans votre requête? – Dinesh