]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/stats/adhesions_annee.sh
3 # Afficher le nombre d'adhérents en fonction de leur première année d'adhésion
4 # Si on appelle le script avec en paramètre une année, il fait le calcul pour les adhérents
5 # encore adhérents pour l'année fournie.
6 # Si on l'appelle sans paramètre, il fait le calcul pour toutes les années possibles
7 # et présente le résultat dans une "matrice" triangulaire
13 # Vide, on va lancer le script de calcul complet
16 # Pas vide, on espère que c'est bien une année et on lance le calcul seulement dessus
19 SELECT count(idbde), prems
21 SELECT a.idbde, pseudo, nom, prenom,
22 (SELECT min(annee) FROM adhesions WHERE adhesions.idbde = c.idbde) AS prems
23 FROM comptes c, adhesions a
24 WHERE a.idbde = c.idbde AND a.annee = ${annee}
32 echo "Creating auxiliary table fy"
33 psql note
-c "DROP TABLE IF EXISTS fy;
34 (SELECT idbde, min(annee) AS firstyear INTO fy FROM adhesions GROUP BY idbde);"
36 echo "Computing year range"
37 beginend
=$
(psql note
-A -c "SELECT (SELECT min(firstyear) FROM fy), (SELECT max(firstyear) FROM fy);" |
tail -n +2 |
head -n 1)
39 begin
=$
(echo ${beginend} | cut
-d "|" -f 1)
40 end
=$
(echo ${beginend} | cut
-d "|" -f 2)
42 # Construction de la requête
44 SELECT years.annee AS prems,"
46 for annee
in $
(seq ${begin} ${end})
48 # On ajoute une colonne pour chaque année
50 (SELECT count(c.idbde)
52 WHERE c.idbde = fy.idbde
53 AND fy.firstyear = years.annee
54 AND EXISTS (SELECT idbde
56 WHERE a.idbde = c.idbde
57 AND a.annee = ${annee}
62 # enlève la dernière virgule
66 FROM (SELECT DISTINCT annee FROM adhesions) AS years
67 ORDER BY years.annee;"
72 echo "Removing auxiliary table"
73 psql note
-c "DROP TABLE fy;"