Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2011, 11h33   #1
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 58
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2004
Messages : 58
Points : 30
Points : 30
Envoyer un message via MSN à petitsims
Par défaut pb requête imbriquée AVG,COUNT

Bonjour à tous,

Je viens faire appel à votre aide car là je sèche un peu...

Code :
1
2
3
4
5
6
7
8
table1
champ1       champ2
val1            bleu
val1            vert
val1            gris
val2            gris
val3            gris
val2            vert
Ce que je souhaite faire c'est filtrer sur la rpésence de la valeur de champ1 et cela par rapport à l'ensemble...
Pour être un peu plus compréhensible :
Etape 1 :
Connaitre le nombre d'occurences
Code :
1
2
3
SELECT count(*) 
FROM table1 
GROUP BY champ1
Etape 2 :
Avoir la moyenne de ce nombre d'occurences
Code :
1
2
3
4
5
6
SELECT avg(test) 
FROM (
  SELECT count(*) AS test 
  FROM table1 
  GROUP BY champ1
)
Et ce que je souhaite c'est avoir uniquement les lignes qui ont le count > à l'avg... le tout en une requete...
Pensez vous que ce soit possible ?
Avez vous des idées ?

Merci d'avance pour votre aide !
__________________
Séb.
petitsims est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 12h03   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
je pense qu'il suffit de mettre la requête dans la clause HAVING
Code SQL :
1
2
3
4
SELECT count(*) AS compte,champ1 
FROM table1 
GROUP BY champ1 
HAVING compte> SELECT avg(test) FROM (SELECT count(*) AS test FROM table1 GROUP BY champ1)
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 15h56   #3
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 58
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2004
Messages : 58
Points : 30
Points : 30
Envoyer un message via MSN à petitsims
Bonjour,

Désolé de répondre si tardivement....

Merci pour ta solution, ça réponds tout à fait à mes attentes !
Encore une fois MERCI !!!!!
__________________
Séb.
petitsims est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web