]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - sum_transacs_by_categorie.py
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
32 AND description = ANY (%(descriptions)s);
34 con
, cur
= getcursor()
35 cur
.execute(req
, {"debut" : debut
+ ' 00:00:00', "fin" : fin
+ ' 00:00:00', "descriptions" : descriptions
})
36 s
= cur
.fetchone()["s"] or 0
39 def get_dates(y
, m
, d
):
41 Donne les dates de découpage de ``d``/``m``/``y`` à ``d-1``/``m``/``y+1``.
43 dates
= ["%s-%s-%s" % (y
, m
, d
)]
44 for i
in range(m
+ 1, 13):
45 dates
.append("%s-%s-01" % (y
, i
))
47 dates
.append("%s-%s-01" % (y
+ 1, i
))
48 dates
.append("%s-%s-%s" % (y
+ 1, m
, d
- 1))
51 def get_year_sums(dates
, filename
):
53 Récupère les données sur l'année pour une catégorie.
55 descriptions
= open(filename
).readlines()
56 descriptions
= [d
.rstrip('\n') for d
in descriptions
]
58 for id in range(len(dates
) - 1):
59 ddebut
, dfin
= dates
[id], dates
[id + 1]
60 sums
.append(get_sum(descriptions
, ddebut
, dfin
))
63 if __name__
== "__main__":
64 filenames
= sys
.argv
[1:]
67 dates
= get_dates(y
, m
, d
)
70 ys
[fn
] = get_year_sums(dates
, fn
)
71 print "debut\tfin\t" + "\t".join(filenames
)
72 for id in range(len(dates
) - 1):
73 ddebut
, dfin
= dates
[id], dates
[id + 1]
74 print "%s\t%s\t%s" % (
77 "\t".join([str(ys
[fn
][id]) for fn
in filenames
])
81 print "%s-%s-%s\t %s-%s-%s\t %s" % (y
, m
, d
, y
+1, m
, d
-1,
82 "\t".join([str(sum(ys
[fn
])) for fn
in filenames
]),)
84 print str(sum([sum(ys
[fn
]) for fn
in filenames
]))