Mysql : avg(min()) ?

10 réponses
AuteurMessage

Zalex14 |
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 17/09/2008 à 14:09

Je cherche à obtenir la moyenne des valeurs minimales d'un champs avec mysql.

une requête de ce type :

Select AVG(MIN(madate)) as moyenne, numuser
FROM matable
group by numuser

J'ai une erreur : "Utilisation invalide de GROUP".
Je vois pas bien où est l'erreur ?

Une idée ?

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 17/09/2008 à 14:12

Au mieux, si ca marche, ca te donnera seulement le MIN. Vu que tu group par numuser, ça récupérera le min par numuser, et la moyenne du min par numuser, donc la moyenne d'une seule valeur.

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 17/09/2008 à 14:13

A mon avis faut le faire en deux passes :

Soit tu fais une table temps qui listera tes valeurs mini, et dedans tu selectionne la moyenne

Soit tu recupere toutes tes valeurs mini et tu fais la moyenne en PHP

J'avais eu un probleme similaire une fois, et je n'avais rien trouvé pour le faire en une seule requete.

A priori, une table temporaire en memoire est ultra rapide, et ca evite le transfert des donnees entre ton serveur MySQL et Web

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 17/09/2008 à 14:21

Ok, merci bien
Je vais passer par une table temporaire

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 17/09/2008 à 15:47

(et les requêtes imbriquées, c'est pratique aussi)

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 17/09/2008 à 18:15

C'est clair

select AVG(Select MIN(madate) as moyenne, numuser
FROM matable
group by numuser)

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 17/09/2008 à 18:34

sur de ton coup julgates ?

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 17/09/2008 à 19:40

Ce serait plutôt un truc du genre :

select avg( minValue ) as moyenne
from ( select min( tonChamp ) as minValue
from taTable
group by idUser );


Mais l'idée est la même.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 17/09/2008 à 22:26

Nan ça peut pas marcher car ya deux champs dans le sous select, mais vous aurez compris...

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 17/09/2008 à 22:29

ba oui, mais c'est mieux de ne pas faire d'erreur quand on fait son malin

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 17/09/2008 à 22:30

Promis la prochaine fois je réponds plus

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 8:30:23 | Généré en 6.43ms | Contacts | Mentions légales |