From e84d9b963152b15263f79be0696ff84d55dd9b56 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Mon, 30 Sep 2013 14:14:30 +0200 Subject: [PATCH] =?utf8?q?Nota=20bene=20SQL=20pour=20faire=20des=20calculs?= =?utf8?q?=20de=20tr=C3=A9soriers.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- bde/tresorerie.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 bde/tresorerie.sql diff --git a/bde/tresorerie.sql b/bde/tresorerie.sql new file mode 100644 index 0000000..35a5106 --- /dev/null +++ b/bde/tresorerie.sql @@ -0,0 +1,16 @@ +# écrit par 20-100 le 16/03/13 (ouais enfin surtout le 17) +# Des requêtes SQL en vrac pour satisfaire Maylis, penser à porter ça sur la NK2015 avec une interface +# pour les tréoriers + +# Avoir les soldes de tout le monde à une date particulière +SELECT pseudo, numcbde, recu, emis, COALESCE(recu, 0)-COALESCE(emis, 0) AS solde FROM (SELECT adherents.pseudo, adherents.numcbde, (SELECT sum(montant*quantite) FROM transactions WHERE valide AND destinataire=adherents.numcbde AND date<'2012-02-22') AS recu, (SELECT sum(montant*quantite) FROM transactions WHERE valide AND emetteur=adherents.numcbde AND date<'2012-02-22') AS emis FROM adherents) AS calculs; + +# Avoir la somme de tous les soldes de tout le monde à cette date : +SELECT sum(solde) FROM (SELECT pseudo, numcbde, recu, emis, COALESCE(recu, 0)-COALESCE(emis, 0) AS solde FROM (SELECT adherents.pseudo, adherents.numcbde, (SELECT sum(montant*quantite) FROM transactions WHERE valide AND destinataire=adherents.numcbde AND date<'2012-02-22') AS recu, (SELECT sum(montant*quantite) FROM transactions WHERE valide AND emetteur=adherents.numcbde AND date<'2012-02-22') AS emis FROM adherents) AS calculs) AS soldes; +# Oh ! ça fait 0 ! cool hein ? +# Eh ben ça a pas été si trivial que ça… -_- + + +# Le résumé des transactions du BDE, regroupé par type. +SELECT sum(montant*quantite*(CASE WHEN emetteur=destinataire THEN 0 WHEN destinataire=0 THEN 1 ELSE -1 END)) AS total, remarque FROM transactions WHERE valide AND 0 in (emetteur, destinataire) AND date<='2013-02-19' AND date>='2012-02-22' GROUP BY remarque ORDER BY total; +# Attention : penser à changer les *deux* 0 pour le faire sur quelqu'un d'autre. -- 2.39.2