]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - sum_transacs_by_categorie.py
5 Affiche les gains BDE par mois et par catégorie.
7 Une catégorie est définie par une liste de descriptions.
8 Le script mange donc une liste de fichiers contenant une description par ligne.
13 import psycopg2
.extras
16 con
= psycopg2
.connect(database
='note')
17 cur
= con
.cursor(cursor_factory
=psycopg2
.extras
.DictCursor
)
20 def get_sum(descriptions
, debut
, fin
):
22 Récupère le montant total des transactions reçue par le BDE dans ayant
23 leur descrption dans ``descriptions``
26 SELECT COALESCE(sum(quantite*montant), 0) AS s
33 AND description = ANY (%(descriptions)s);
35 con
, cur
= getcursor()
36 cur
.execute(req
, {"debut" : debut
+ ' 00:00:00', "fin" : fin
+ ' 00:00:00', "descriptions" : descriptions
})
37 s
= cur
.fetchone()["s"] or 0
40 def get_dates(y
, m
, d
, yf
, mf
, df
):
42 Donne les dates de découpage de ``d``/``m``/``y`` à ``d-1``/``m``/``y+1``.
44 dates
= ["%d-%02d-%02d" % (y
, m
, d
)]
49 while (y
, m
) <= (yf
, mf
):
50 dates
.append("%d-%02d-01" % (y
, m
))
55 # On a atteint le dernier mois
56 dates
.append("%d-%02d-%02d" % (yf
, mf
, df
))
59 def get_year_sums(dates
, filename
):
61 Récupère les données sur l'année pour une catégorie.
63 descriptions
= open(filename
).readlines()
64 descriptions
= [d
.rstrip('\n') for d
in descriptions
]
66 for id in range(len(dates
) - 1):
67 ddebut
, dfin
= dates
[id], dates
[id + 1]
68 sums
.append(get_sum(descriptions
, ddebut
, dfin
))
76 yf
, mf
, df
= 2016, 2, 19
77 dates
= get_dates(y
, m
, d
, yf
, mf
, df
)
80 ys
[fn
] = get_year_sums(dates
, fn
)
81 print "debut\tfin\t" + "\t".join(filenames
)
82 for id in range(len(dates
) - 1):
83 ddebut
, dfin
= dates
[id], dates
[id + 1]
84 print "%s\t%s\t%s" % (
87 "\t".join([str(ys
[fn
][id]) for fn
in filenames
])
91 print "%s-%s-%s\t %s-%s-%s\t %s" % (y
, m
, d
, yf
, mf
, df
,
92 "\t".join([str(sum(ys
[fn
])) for fn
in filenames
]),)
94 print str(sum([sum(ys
[fn
]) for fn
in filenames
]))
96 if __name__
== "__main__":
97 filenames
= sys
.argv
[1:]