[SQL] Deux agrégations imbriqués !
Résolu
JooS
Messages postés
2468
Date d'inscription
Statut
Membre
Dernière intervention
-
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
Bonsoir, alors voila, j'ai demander a plusieurs personnes (sensés connaitre la réponse), mais aucune réponse claire de leur part !
Peut on ou pas imbriquer deux agrégations l'une dans l'autre, par exemple, MAX(COUNT(*)) !
Un professeur m'avait dit qu'il doit y avoir un GROUP BY blabla ... !
MySQL me dit qu'il y a une erreur !
Alors si la réponse est Oui !
Une table contient des prénoms, qui peuvent se répéter !
On veut connaitre le prénom qui se répète le plus souvent, comment on fait ?
PS : Sans utiliser ORDER BY et LIMIT !
Merci !
Peut on ou pas imbriquer deux agrégations l'une dans l'autre, par exemple, MAX(COUNT(*)) !
Un professeur m'avait dit qu'il doit y avoir un GROUP BY blabla ... !
MySQL me dit qu'il y a une erreur !
Alors si la réponse est Oui !
Une table contient des prénoms, qui peuvent se répéter !
On veut connaitre le prénom qui se répète le plus souvent, comment on fait ?
PS : Sans utiliser ORDER BY et LIMIT !
Merci !
A voir également:
- Count max sql
- Driver max - Télécharger - Pilotes & Matériel
- I14 pro max - Accueil - Guide téléphones
- Max ou netflix - Accueil - Streaming
- Max maillot avis - Forum Consommation & Internet
- Logiciel sql - Télécharger - Bases de données
3 réponses
Bonjour
[edit] Pardon, c'est le prénom qui t'intéressait.
Avec mysql, SELECT prenom,MAX(toto)... marche
Mais je ne suis pas sûr que ça marche avec tous les SGBD car il peut y avoir plusieurs prénoms ex-aequo, et cette requête en rendra un seul. J'essaye autre chose et je reviens
SELECT MAX(toto) FROM (SELECT prenom, count(prenom) AS toto FROM matable GROUP BY prenom) t1
[edit] Pardon, c'est le prénom qui t'intéressait.
Avec mysql, SELECT prenom,MAX(toto)... marche
Mais je ne suis pas sûr que ça marche avec tous les SGBD car il peut y avoir plusieurs prénoms ex-aequo, et cette requête en rendra un seul. J'essaye autre chose et je reviens
SELECT prenom,COUNT(prenom)cprenom, pmax FROM matable,(SELECT MAX(toto) pmax FROM (SELECT prenom , COUNT(prenom) toto FROM matble GROUP BY prenom) t1) t2 GROUP BY prenom HAVING cprenom=pmax
Je ne suis pas un pro de SQL, il y a sans doute plus léger.
L'idée est de :
1 - rechercher le nombre d'occurrences (toto) de chaque prénom - select d'alias t1
2 - de rechercher le max de toto -> pmax, la fréquence du (des) prénom(s) le(s) plus utilisé(s) - select d'alias t2
3 - de recréer le même select qu'au point 1 en ajoutant une colonne qui contient cmax (c'est là que c'est lourd)
4 - de ne garder que les lignes dont la fréquence est cmax ( 'HAVING' )
Euh...
Ta requête ne marche pas. Chez moi elle sort simplement le premier prénom de la table.
D'ailleurs, un COUNT(*) sans GROUP BY prenom n'a aucune raison de compter les prénoms identiques. Il compte le nombre total de lignes de ta table, c'est tout. Il ne devine pas tout seul si tu comptes les prénoms, les noms ou n'importe quel autre champ de la table.
Ta requête ne marche pas. Chez moi elle sort simplement le premier prénom de la table.
D'ailleurs, un COUNT(*) sans GROUP BY prenom n'a aucune raison de compter les prénoms identiques. Il compte le nombre total de lignes de ta table, c'est tout. Il ne devine pas tout seul si tu comptes les prénoms, les noms ou n'importe quel autre champ de la table.
Ben justement, j'ai cru que c'était correct vu que le prenom qui s'est affiché était effectivement le prénom le plus répété !!! lol
Donc j'ai pas trop insister la dessus vu que c'est un professeur qui m'a lancer la dessus, maintenant si j'ai louper un GROUP BY qu'il avait (peut être) mentionner, je sais pas !!! :D
Donc j'ai pas trop insister la dessus vu que c'est un professeur qui m'a lancer la dessus, maintenant si j'ai louper un GROUP BY qu'il avait (peut être) mentionner, je sais pas !!! :D
j'ai cru que c'était correct vu que le prenom qui s'est affiché était effectivement le prénom le plus répété
Et tu tires des conclusions définitives sur un truc que tu ne comprends pas, à partir d'un seul essai ?
C'est une très mauvaise façon d'être rapide, tu peux être sûr de perdre 10 fois plus de temps plus tard parce que tu ne remettras pas en cause un bout de code qui, en fait, est mauvais.
Et tu tires des conclusions définitives sur un truc que tu ne comprends pas, à partir d'un seul essai ?
C'est une très mauvaise façon d'être rapide, tu peux être sûr de perdre 10 fois plus de temps plus tard parce que tu ne remettras pas en cause un bout de code qui, en fait, est mauvais.
La requête fonctionne, et elle affiche bel et bien le nombre max d'occurrence d'un prénom !
sauf que le prénom sélectionné ne correspond pas !
Par contre, je viens de ré-essayer ma proposition de 9h13, elle semble bien marcher, elle (sauf que j'avais écrit matble au lieu de matable)