Trouver le MAX d'un SUM

cherie_cheri Messages postés 36 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 16 août 2007 - 26 juin 2007 à 10:13
cherie_cheri Messages postés 36 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 16 août 2007 - 26 juin 2007 à 15:24
Bonjour a tous.
Je dois faire une requete qui récupère le maximum d'un calcul (soustraction)
Voila ce que j'ai fais mais ca ne marche pas. J'ai compris pourquoi ca ne fonctionné pas. Je m'étais déja pris la tete avec ce même style de requete mais la solution m'est sorti de la tete.

Voici ma requete :
SELECT agence.ref_banque, Sum([date_ouverture_reelle]-[date_ouverture]) AS [Jour de retard d'ouverture]
FROM agence
GROUP BY agence.ref_banque
HAVING Sum([date_ouverture_reelle]-[date_ouverture])<>0;

Ca il s'agit ma requete de départ pour calculer la différence entre deux dates. Elle fonctionne.
Maintenant je voudrais pouvoir récupérer le MAX des résultats.
A mon avis il me faut faire une sous requete qui calcule cette différence et dans la requete principale il faut que je fasse le MAX. Mais de qu'elle valeur?

7 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 juin 2007 à 10:19
Salut,
Est ce que MAX(Sum([date_ouverture_reelle]-[date_ouverture])) ne fonctionnerait pas (sans grande conviction).
Ou bien alors: avec un TOP 1 couplé avec une clause ORDER BY

@+: Ju£i?n
Pensez: Réponse acceptée
0
cherie_cheri Messages postés 36 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 10:40
alors oui en effet le MAx(Sum(..)) ne fonctionne pas .

TOP 1 couplé avec un order by?

Moi je pensé plutot a une sous requete de ce genre
SELECT max(val)
FROM agence
WHERE val =
(select sum(truc - bidule) as val
from agence);

Mais ca ne marche pas, je dois pas faire le bon lien entre les valeurs
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
26 juin 2007 à 10:48
ce que te dis jrivet fonctionne nikel :

SELECT TOP 1 agence.ref_banque, Sum([date_ouverture_reelle]-[date_ouverture]) AS [Jour de retard d'ouverture]
FROM agence
GROUP BY agence.ref_banque
HAVING Sum([date_ouverture_reelle]-[date_ouverture])<>0
ORDER BY Sum([date_ouverture_reelle]-[date_ouverture]) DESC;
0
cherie_cheri Messages postés 36 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 10:50
c'est bon j'ai réussi
en fait j'ai fait une nouvelle requete pour le MAX qui fait appel non pas a une table mais a ma requete de calcul

MERCI
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
26 juin 2007 à 11:20
a ta guise, ceci dit, évite les sous requetes, ca ralentit la chose, tu peux t'en passer, ici
0
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
26 juin 2007 à 14:07
heu salut, je sais que je reviens sur un sujet résolu...
mais pourquoi vous dites que max(sum( ne marcherait pas???
C'est ce que j'ai fait pour un exercice d'un examen que je viens de passer, et la correction me donne raison. Vous parlez de ce cas précis, ou d'une généralité..?

L'exemple dont je parle :
(SELECT nom, SUM(nbTotRDVPris)

FROM SOUSTRAITANT S , CONTRAT C

WHERE C.codeSousTraitant = S.code

GROUP BY nom

HAVING SUM(nbTotRDVPris ) =

( SELECT MAX( SUM ( nbTotRDVPris) )

FROM CONTRAT

GROUP BY codeSousTraitant)

)

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
0
cherie_cheri Messages postés 36 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 15:24
pour ce qui est de ralentir je ne sais pas trop.. mais c'est la meilleure des solutions que j'ai trouvé.
il est vrai que je n'ai pas testé ta solution et je vais le fiare d'ici peut.

ensuite quand je dit que MAX(SUM(val)) ne fonctionne pas c'est dans ce type de requete :
select MAX(SUM(val)
from maTable;
Après dans une sous requete je n'y ai jamais pensé
0