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

Résolu/Fermé
Manu - Modifié par Manu le 20/10/2010 à 13:27
waoumita Messages postés 73 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 31 mai 2011 - 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)

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.
1
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
20 oct. 2010 à 14:40
Effectivement, bien joué^^
0
waoumita Messages postés 73 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 31 mai 2011
20 oct. 2010 à 13:38
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
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 mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
20 oct. 2010 à 14:19
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
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 samedi 21 mars 2009 Statut Membre Dernière intervention 31 mai 2011
20 oct. 2010 à 17:24
c'est sa ce qu'il fallait faire je suis arrivé en retard car je suis au boulot ^^
bon courage :d:d:d
0