[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   -
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)

6 réponses

Manu
 
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.
1
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
Effectivement, bien joué^^
0
waoumita Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Manu
 
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.
0
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
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
0

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

Posez votre question
Manu
 
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.
0
waoumita Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
c'est sa ce qu'il fallait faire je suis arrivé en retard car je suis au boulot ^^
bon courage :d:d:d
0