]> gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/stats/adhesions_annee.sh
[bde] adhesions_annee : pour des stats sur les anciens adhérents encore adhérents
[scripts-20-100.git] / bde / stats / adhesions_annee.sh
1 #!/bin/bash
2
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
8
9 export LESS='-SR'
10
11 case $1 in
12 "")
13 # Vide, on va lancer le script de calcul complet
14 ;;
15 *)
16 # Pas vide, on espère que c'est bien une année et on lance le calcul seulement dessus
17 annee=$1
18 psql note -c "
19 SELECT count(idbde), prems
20 FROM (
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}
25 ) AS prout
26 GROUP BY prems
27 ORDER BY prems;"
28 exit
29 ;;
30 esac
31
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);"
35
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)
38
39 begin=$(echo ${beginend} | cut -d "|" -f 1)
40 end=$(echo ${beginend} | cut -d "|" -f 2)
41
42 # Construction de la requête
43 req="
44 SELECT years.annee AS prems,"
45
46 for annee in $(seq ${begin} ${end})
47 do
48 # On ajoute une colonne pour chaque année
49 req="${req}
50 (SELECT count(c.idbde)
51 FROM comptes c, fy
52 WHERE c.idbde = fy.idbde
53 AND fy.firstyear = years.annee
54 AND EXISTS (SELECT idbde
55 FROM adhesions a
56 WHERE a.idbde = c.idbde
57 AND a.annee = ${annee}
58 )
59 ) AS c${annee},"
60 done
61
62 # enlève la dernière virgule
63 req=${req::-1}
64
65 req="${req}
66 FROM (SELECT DISTINCT annee FROM adhesions) AS years
67 ORDER BY years.annee;"
68
69 echo "Computing…"
70 psql note -c "${req}"
71
72 echo "Removing auxiliary table"
73 psql note -c "DROP TABLE fy;"