1 # écrit par
20-100 le
16/03/13 (ouais enfin surtout le
17)
2 # Des requêtes
SQL en vrac pour satisfaire Maylis
, penser à porter ça sur la NK2015 avec une interface
5 # Avoir les soldes de tout le monde à une
date particulière
6 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
;
8 # Avoir la somme de tous les soldes de tout le monde à cette
date :
9 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
;
10 # Oh
! ça fait
0 ! cool hein ?
11 # Eh ben ça a pas été si trivial que ça…
-_
-
14 # Le ré
sumé des transactions du BDE
, regroupé par
type.
15 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
;
16 # Attention
: penser à changer les
*deux
* 0 pour le faire sur quelqu
'un d'autre.