[SQL] Deux agrégations imbriqués !
Résolu/Fermé
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
-
23 mai 2012 à 22:05
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 25 mai 2012 à 16:33
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 25 mai 2012 à 16:33
A voir également:
- Count max sql
- I14 pro max - Accueil - Guide téléphones
- Max tv gratuit - Télécharger - Télévision
- Max maillot avis - Forum Consommation & Internet
- Sql lister les tables ✓ - Forum Programmation
- Max ou netflix - Accueil - Streaming
3 réponses
Utilisateur anonyme
Modifié par le père. le 24/05/2012 à 08:58
Modifié par le père. le 24/05/2012 à 08:58
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
Utilisateur anonyme
24 mai 2012 à 09:13
24 mai 2012 à 09:13
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' )
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
24 mai 2012 à 16:50
24 mai 2012 à 16:50
ça fonctionne trés bien o.O !
Même si l'affichage est un peut Chelou :p, mais sympa quand même !
J'ai essaye ceci, le résultat est correct, mais pour la logique, je ne sais pas !!!
Même si l'affichage est un peut Chelou :p, mais sympa quand même !
J'ai essaye ceci, le résultat est correct, mais pour la logique, je ne sais pas !!!
SELECT prenom FROM tables HAVING COUNT(*) >= (SELECT COUNT(*) FROM table)
Utilisateur anonyme
25 mai 2012 à 00:58
25 mai 2012 à 00:58
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.
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
25 mai 2012 à 01:03
25 mai 2012 à 01:03
C'est vrai, c'est con :D !!!
On m'a lancer sur une fausse piste !
On m'a lancer sur une fausse piste !
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 25/05/2012 à 01:12
Modifié par JooS le 25/05/2012 à 01:12
Merci en tout cas pour les éclaircissements !
Sauf que personne ne m'a encore confirmer si on pouvait imbriquer des agrégations :D !!
Sauf que personne ne m'a encore confirmer si on pouvait imbriquer des agrégations :D !!
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
25 mai 2012 à 01:16
25 mai 2012 à 01:16
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.
24 mai 2012 à 16:31
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 !
Modifié par le père. le 24/05/2012 à 16:49
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)