Bonjour,

je souhaite écrire une requête permettant de compter le nombre de création des enregistrements par an (la table contient le champs d_creation contenant la date à laquelle l'enregistrement a été créé), chaque année devant cumuler le total des années antérieures

Le nombre d'enregistrement comptés pour 2008 doit donc correspondre au nombre total d'enregistrements dans la table, celui de 2007 le nombre d'enregistrement créés jusqu'au 31/12/2007...

J'ai réussi à écrire une requête permettant d'obtenir le résultat souhaité :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SELECT t1.annee, SUM(t2.nombre)
  FROM
     (
	 	SELECT DISTINCT TO_CHAR(d_creation,'YYYY') annee, COUNT(*) nombre
		  FROM la_table
	     GROUP BY TO_CHAR(d_creation,'YYYY')
     ) t1,
     (
		SELECT DISTINCT TO_CHAR(d_creation,'YYYY') annee, COUNT(*) nombre
          FROM la_table
          GROUP BY TO_CHAR(d_creation,'YYYY')
     ) t2
 WHERE t1.annee >= t2.annee
 GROUP BY t1.annee
 ORDER BY t1.annee DESC
 ;
 
ANNEE	SUM(T2.NOMBRE)
 
2008	19843
2007	19567
2006	16172
2005	14741
2004	13015
2003	9227
2002	8469
2001	7450
2000	6696
1999	6068
1998	5390
1997	4960

J'aimerais simplifier cette requête en utilisant des fonctions analytiques. Je n'y suis pas encore parvenu.

Pouvez-vous me donner quelques pistes ?

Merci et bonne journée