[SQL]:Somme et intervalle de date
Résolu
ajp55
Messages postés
482
Statut
Membre
-
ajp55 Messages postés 482 Statut Membre -
ajp55 Messages postés 482 Statut Membre -
Bonjour,
suis entrain de réaliser une petite application intranet avec base de données derrière.
j'ai une table des participant et une autre table des participation.
la table participant stocke les infos sur les participant du groupe.
voilà la structure de la table participation.
le problème. je voudrais une requete sql qui va selectionner en fonction de l'IDPARTICIPANT(foreign key), la somme des montants qu'il aura versé sur un intervalle soit mensuellement, soit annuellement et ou hebdomadaire.
Par exemple, pour le selection annuelle. on aura
année : 2008 suivi de la somme du montant versé en 2008.
année 2009 suivi de la somme du montant versé en 2009.
il va donc falloir selectionner un intervalle de date et appliquer l'opération SUM.
quelqu'un peut-il m'aider. je ne sais comment y procéde.
suis entrain de réaliser une petite application intranet avec base de données derrière.
j'ai une table des participant et une autre table des participation.
la table participant stocke les infos sur les participant du groupe.
voilà la structure de la table participation.
TABLE 'participation' (
'ID' int(11) NOT NULL AUTO_INCREMENT,
'IDPARTICIPANT' varchar(60) NOT NULL,
'MONTANT' double DEFAULT NULL,
'DATE' datetime NOT NULL,
PRIMARY KEY ('ID'),
)
le problème. je voudrais une requete sql qui va selectionner en fonction de l'IDPARTICIPANT(foreign key), la somme des montants qu'il aura versé sur un intervalle soit mensuellement, soit annuellement et ou hebdomadaire.
Par exemple, pour le selection annuelle. on aura
année : 2008 suivi de la somme du montant versé en 2008.
année 2009 suivi de la somme du montant versé en 2009.
il va donc falloir selectionner un intervalle de date et appliquer l'opération SUM.
quelqu'un peut-il m'aider. je ne sais comment y procéde.
2 réponses
-
Bonjour,
une petite requête du styleSELECT SUM(MONTANT), IDPARTICIPANT FROM participation where DATE >= '2010-01-01' and DATE <= '2010-12-31' GROUP BY IDPARTICIPANT
devrait pouvoir répondre à ta problématique. Il te suffit de mettre les bonnes dates pour obtenir tes sommes...
Cordialement
Julie -
Par an
SELECT SUM(MONTANT), IDPARTICIPANT, YEAR('DATE') periode
FROM participation
GROUP BY IDPARTICIPANT, YEAR('DATE')
Par mois
SELECT
SUM(MONTANT), IDPARTICIPANT,
CONCAT( YEAR('DATE'), '-' , MONTH('DATE') ) periode
FROM participation
GROUP BY IDPARTICIPANT, YEAR('DATE'), MONTH('DATE')
Par semaine
SELECT
SUM(MONTANT), IDPARTICIPANT,
CONCAT( YEAR('DATE'), '-S' , WEEK('DATE') ) periode
FROM participation
GROUP BY IDPARTICIPANT, YEAR('DATE'), WEEK('DATE')