]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - sum_transacs_by_categorie.py
900ed808b989030c3a0e730e8f02aeb1085f2a3e
5 Récupère 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
):
42 Donne les dates de découpage de ``d``/``m``/``y`` à ``d-1``/``m``/``y+1``.
44 dates
= ["%s-%s-%s" % (y
, m
, d
)]
45 for i
in range(m
+ 1, 13):
46 dates
.append("%s-%s-01" % (y
, i
))
48 dates
.append("%s-%s-01" % (y
+ 1, i
))
49 dates
.append("%s-%s-%s" % (y
+ 1, m
, d
- 1))
52 def get_year_sums(dates
, filename
):
54 Récupère les données sur l'année pour une catégorie.
56 descriptions
= open(filename
).readlines()
57 descriptions
= [d
.rstrip('\n') for d
in descriptions
]
59 for id in range(len(dates
) - 1):
60 ddebut
, dfin
= dates
[id], dates
[id + 1]
61 sums
.append(get_sum(descriptions
, ddebut
, dfin
))
64 if __name__
== "__main__":
65 filenames
= sys
.argv
[1:]
68 dates
= get_dates(y
, m
, d
)
71 ys
[fn
] = get_year_sums(dates
, fn
)
72 print "debut\tfin\t" + "\t".join(filenames
)
73 for id in range(len(dates
) - 1):
74 ddebut
, dfin
= dates
[id], dates
[id + 1]
75 print "%s\t%s\t%s" % (
78 "\t".join([str(ys
[fn
][id]) for fn
in filenames
])
82 print "%s-%s-%s\t %s-%s-%s\t %s" % (y
, m
, d
, y
+1, m
, d
-1,
83 "\t".join([str(sum(ys
[fn
])) for fn
in filenames
]),)
85 print str(sum([sum(ys
[fn
]) for fn
in filenames
]))