[ACCESS] Problème requête SQL SUM puis MAX
Résolu
Manu
-
waoumita Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
waoumita Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai un problème de requête SQL qui a l'air plutôt simple mais je n'arrive pas à la faire...
J'ai seulement une table RDV.
Dans cette table il y a tout plein d'infos mais seulement deux m'intéressent.
Voici la table :
Table : RDV
Champs : idClient, Prix
J'aimerai faire la somme des Prix par client.
Donc ça donne "SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient;"
Pas de problème ici.
Ensuite j'aimerai récupérer le prix le plus élevé avec le nom du client et là ça se corse.
J'ai essayé :
"SELECT idClient, MAX(Prix) FROM RDV WHERE Prix IN (SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient);"
Mais ça ne va pas.
En gros ce que j'aimerai faire je vous l'écrit dans une mauvaise syntaxe mais ça aide à comprendre.
"SELECT idClient, MAX(Prix) FROM RDV WHERE MAX(Prix) = (SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient);"
J'ai même essayé avec plusieurs requêtes mais ce n'est pas mieux...
Quelqu'un a une solution svp ?
Sinon si c'est faisable séparément je suis preneur aussi. Du genre requête qui récupère le prix le plus élevé (ça j'ai réussi) et requête qui récupère le client à qui appartient le plus élevé (je n'y arrive pas)
J'ai seulement une table RDV.
Dans cette table il y a tout plein d'infos mais seulement deux m'intéressent.
Voici la table :
Table : RDV
Champs : idClient, Prix
J'aimerai faire la somme des Prix par client.
Donc ça donne "SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient;"
Pas de problème ici.
Ensuite j'aimerai récupérer le prix le plus élevé avec le nom du client et là ça se corse.
J'ai essayé :
"SELECT idClient, MAX(Prix) FROM RDV WHERE Prix IN (SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient);"
Mais ça ne va pas.
En gros ce que j'aimerai faire je vous l'écrit dans une mauvaise syntaxe mais ça aide à comprendre.
"SELECT idClient, MAX(Prix) FROM RDV WHERE MAX(Prix) = (SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient);"
J'ai même essayé avec plusieurs requêtes mais ce n'est pas mieux...
Quelqu'un a une solution svp ?
Sinon si c'est faisable séparément je suis preneur aussi. Du genre requête qui récupère le prix le plus élevé (ça j'ai réussi) et requête qui récupère le client à qui appartient le plus élevé (je n'y arrive pas)
6 réponses
C'est bon, j'ai enfin trouvé.
Au lieu d'utiliser MAX j'ai rusé :
SELECT idClient, SUM(Prix) AS MeilleurPrix
FROM RDV
GROUP BY idClient
HAVING SUM(Prix) >= ALL ( SELECT SUM(Prix)
FROM RDV
GROUP BY idClient);
Merci beaucoup pour votre aide ;)
Problème résolu.
Au lieu d'utiliser MAX j'ai rusé :
SELECT idClient, SUM(Prix) AS MeilleurPrix
FROM RDV
GROUP BY idClient
HAVING SUM(Prix) >= ALL ( SELECT SUM(Prix)
FROM RDV
GROUP BY idClient);
Merci beaucoup pour votre aide ;)
Problème résolu.
Gaunts
Messages postés
1125
Date d'inscription
Statut
Membre
Dernière intervention
116
Effectivement, bien joué^^
c'est normal que ca marche pas puisque dans ta requete tu fais
SELECT idClient, MAX(Prix) FROM RDV WHERE MAX(Prix) = (SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient);"
et le max(prixà bien sur ne va pas etre = a id client
et j'ai pas comprix ou est le probleme est ce que tu veux calculer le max des somems des prix ou justement el maximum des prix
courage et si t'as besoin d'aide n'hesite pas
SELECT idClient, MAX(Prix) FROM RDV WHERE MAX(Prix) = (SELECT idClient, SUM(Prix) FROM RDV GROUP BY idClient);"
et le max(prixà bien sur ne va pas etre = a id client
et j'ai pas comprix ou est le probleme est ce que tu veux calculer le max des somems des prix ou justement el maximum des prix
courage et si t'as besoin d'aide n'hesite pas
Merci pour la réponse rapide.
Au temps pour moi, je me suis trompé en copiant la requête.
En fait c'est ça la requête que j'ai essayé :
"SELECT idClient, MAX(Prix) FROM RDV WHERE Prix IN (SELECT SUM(Prix) FROM RDV GROUP BY idClient);"
En fait j'aimerai avoir le prix le plus élevé de la somme des prix ainsi que le client.
Exemple :
idClient-----------Prix
Henry-------------20
Paul---------------40
Coralie-----------100
Henry------------100
Paul---------------10
Ma requête affichera :
idClient-----------Prix
Henry-------------120
Bon l'idClient est le numéro de client, j'ai mis le nom pour mieux comprendre.
Merci beaucoup.
Au temps pour moi, je me suis trompé en copiant la requête.
En fait c'est ça la requête que j'ai essayé :
"SELECT idClient, MAX(Prix) FROM RDV WHERE Prix IN (SELECT SUM(Prix) FROM RDV GROUP BY idClient);"
En fait j'aimerai avoir le prix le plus élevé de la somme des prix ainsi que le client.
Exemple :
idClient-----------Prix
Henry-------------20
Paul---------------40
Coralie-----------100
Henry------------100
Paul---------------10
Ma requête affichera :
idClient-----------Prix
Henry-------------120
Bon l'idClient est le numéro de client, j'ai mis le nom pour mieux comprendre.
Merci beaucoup.
Salut,
D'après moi il faut passer par deux requêtes: la première fait une somme et la deuxième sélectionne la plus élevée
D'après moi il faut passer par deux requêtes: la première fait une somme et la deuxième sélectionne la plus élevée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai déjà essayé :
Requête1 :
"SELECT SUM(Prix) AS SOMMEPRIX FROM RDV GROUP BY idClient;"
Requête2 :
"SELECT MAX(SOMMEPRIX) FROM Requête1;"
Ça me donne bien le prix le plus élevé mais je ne sais pas comment faire pour avoir l'idClient.
Si je fais :
Requête1 :
"SELECT idClient, SUM(Prix) AS SOMMEPRIX FROM RDV GROUP BY idClient;"
Requête2 :
"SELECT idClient, MAX(SOMMEPRIX) FROM Requête1;"
Ça ne fonctionne pas.
Requête1 :
"SELECT SUM(Prix) AS SOMMEPRIX FROM RDV GROUP BY idClient;"
Requête2 :
"SELECT MAX(SOMMEPRIX) FROM Requête1;"
Ça me donne bien le prix le plus élevé mais je ne sais pas comment faire pour avoir l'idClient.
Si je fais :
Requête1 :
"SELECT idClient, SUM(Prix) AS SOMMEPRIX FROM RDV GROUP BY idClient;"
Requête2 :
"SELECT idClient, MAX(SOMMEPRIX) FROM Requête1;"
Ça ne fonctionne pas.