Posez votre question Signaler

[ACCESS] Problème requête SQL SUM puis MAX [Résolu]

Manu - Dernière réponse le 20 oct. 2010 à 17:24
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)
Lire la suite 

[ACCESS] Problème requête SQL SUM puis MAX »

Suggestions
7 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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.
Gaunts- 20 oct. 2010 à 14:40
Effectivement, bien joué^^
Ajouter un commentaire
Réponse
+0
moins plus
c'est sa ce qu'il fallait faire je suis arrivé en retard car je suis au boulot ^^
bon courage :d:d:d
Ajouter un commentaire
Ce document intitulé « [ACCESS] Problème requête SQL SUM puis MAX » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?