SOMME DANS REQUETE SQL

Fermé
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 - 1 sept. 2009 à 17:05
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 2 sept. 2009 à 16:53
Bonjour,
Me voila de retour dans la vie active, ravi d'étre parmis vous de nouveau, bonne rentrée à tou(te)s

Je reviens vers vous avec un petit souci, je souhaite faire une somme sur une colonne précise Montant, sauf que cette somme je dois la faire uniquement quand le nom du client change. Le problème c'est que je dois faire un group by pour regrouper les clients, alors que c'est pas bon car j'ai un ID.

SELECT Code, date_envoi, Nom, prenom, SUM(Montant)
from T_transfert
Order By Nom, prenom
Group By Nom, prenom..

Ce que je souhaite faire apparaitre c'est seulement les clients qui ont fait des montant supérieure à 500 €

voici un apercu de la table:
code Date_envoi Nom prenom Montant ........
1 2008 MARTIN GEORGES 45
3 2008 MARTIN GEORGES 100
43 2008 DUPONT MARIE 20
21 2008 DUPONT MARIE 10
33 2008 DUPONT MARIE 50
434 2008 DUPONT ALAIN 10000
3 2008 DUPONT Alain 2000

Merci d'avances
A voir également:

11 réponses

Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
1 sept. 2009 à 17:12
Bonjour,

Je pense qu'il faut que tu regardes du coté de la fonction HAVING qui permet de filtrer les agrégats il me semble.
1
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 32
1 sept. 2009 à 17:25
Bonjour,

Merci pour ta réponse,
Peux tu me donner un exemple s'il te plaît?
Merci d'avance
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 sept. 2009 à 17:42
bonjour

pourquoi ne mais tu pas un where montant > 500 dans ta requete?
0
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 32
1 sept. 2009 à 17:43
Bonjour,

Le problème comme je l'ai dis dans le début du message du group by est que je dois afficher ce que je compte regrouper. Si je veux faire des conditions sur les noms des clients et leurs montant, je dois sélectionner uniquement les colonnes noms et montant et mettre un group by et un having by selon la somme du montant

Je veux comme meme faire apparaitre les ID de mes lignes, les dates et ..... ce sont des infos obligatoires :(

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 sept. 2009 à 18:08
voila ca devrais te plaire ca


SELECT perso2.nom, perso2.prenom, perso2.AGE, Sum(perso2.prix) AS SommeDeprix
FROM perso2
GROUP BY perso2.nom, perso2.prenom, perso2.AGE
HAVING (((Sum(perso2.prix))>10000));
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
1 sept. 2009 à 19:27
500 dans une tables, un S.I est une valeur (un indicateur) qui est la très certaines sommes de plusieurs lignes.
Faire un where champ > 500 ça ne vaut que ligne par ligne pas de groupe meme avec group by.
Having champ > 500, signifie : sur la base du regroupement du résultat, ne remonte que ceux qui sont > 500.

Vous avez compris ?
WHERE filtre des lignes
HAVING filtre des agrégats

Du moment qu'on somme ou qu'on compte attention à l'usage de WHERE sur les valeurs !
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 sept. 2009 à 19:47
merci pour l info
0
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 32
2 sept. 2009 à 09:43
Bonjour,
désolé pr ce retard de réponse, mais la réponse me semble pas très convaincante,
Je connais l'usage du Having, mais comme je l'ai déja expliqué, il faut que je fasse une somme d'abord sur le client quand il change, ensuite un having dans la meme requete. Me semble l'utilisation des requetes imbriquées s'imposent, si quelqu'un a une idée s'il vous plait?
Ex;
Select * from Table
Left Outer Join Table (select T1.Nom, T1.prenom, Sum(T1.Montant) As cumul
from Table T1
where T1.annee = Year(Date)
order by T1.Nom, T1.prenom
group by T1.Nom, T1.prenom, cumul) T2
ON T1.Nom = T2.Nom

Mais cela ne marche vraiment pas, c'est une idée est ce quelqu'un pourrait m'éclairer s'il vous plait
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
2 sept. 2009 à 09:48
pk dans 2 requetes?
Tu places ton having dans la req principale.
Et après tout dépend de comment est organisé ton SI. C'est à toi de t'adapter. Hioer j'ai expliqué ce qu'il faut savoir en général sur having

Maintenant dans ton cas il faut peut etre s'y prendre autrement. Je peux me tromper...
0
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 32
2 sept. 2009 à 09:57
Est ce que tu connais la fonctionnalité sous.total de Excel?
En faite c'est simple, j'ai une liste de clients qui effectue des opérations monétaires avec chacun un Id par ligne, je veux séléctionner ces enregistrements pour ceux qui ont fait plus de 2000€, et sélectionner bien entendu tous les renseignement, le having nécessite un group by pour faire un cumul sur la somme, c'est pour ça le recours à deux requetes avec équijointures .
kk1 a une idée ?? :(
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
2 sept. 2009 à 16:53
sous total de excel ? la comme ça non mais je pense avoir une idée.
C'est via ms query que tu as recours aux requetes ?
Pas bien grave je n'ai plus de réponses à apporter pour l'instant

Evidemment ue having nécessite un group by puisque tu sommes (agréger)...
0