Compter le maximun d'une colonne

Résolu/Fermé
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 28 sept. 2019 à 00:10
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 28 sept. 2019 à 13:52
Bonjour, j'ai une basse de donnée composer d'une table Stats( avec comme attribut Datematch(primary key), prenomnomS(clé étrangère) ..... ( et plein d'autre attribut qui ne sont pas utilise ici) ) & une table joueur ( avec comme attribut prenomnomJ (primary key) , taille, poids ....) . Je recherche à lister le(s) joueur(s) ayant joué le plus de match .

j'ai tenté la commande suivante :
SELECT count(Datematch), prenomnomJ FROM joueur J, stats S WHERE J.prenomnomJ=S.prenomnomS group by prenomnomJ having count(*)>= ALL ( SELECT count(*) FROM stats S2 group by S2.prenomnomS);




cependant cela me sort ceci :



 COUNT(DATEMATCH) PRENOMNOMJ
---------------- ----------------------------------------
              82 Joe Ingles
              82 Karl-Anthony Towns
              82 Tyus Jones
              82 Yogi Ferrell
              82 Bismack Biyombo
              82 Dillon Brooks
              82 Marcin Gortat
             114 Tim Hardaway
              82 E Twaun Moore
              82 Lance Stephenson
              82 Pat Connaughton

COUNT(DATEMATCH) PRENOMNOMJ
---------------- ----------------------------------------
              82 Taj Gibson
              82 LeBron James
              82 Patrick Patterson
              82 P.J. Tucker
              82 Cory Joseph
              82 Julius Randle
              82 Andrew Wiggins
              82 Darius Miller
              82 Dragan Bender
              82 Bradley Beal
              82 Khris Middleton

COUNT(DATEMATCH) PRENOMNOMJ
---------------- ----------------------------------------
             132 Larry Nance
              82 Raymond Felton

24 rows selected.





J'ai une partie des maximum, cependant je n'ai pas celui qui à fait le plus de match pendant la saison ( Larry Nance avec ses 132 matchs) mais je ne voit pas d'où vient mon erreur ... Quelqu'un pourrait m'aider s'il vous plait ?


Merci d'avance .
A voir également:

1 réponse

yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
Modifié le 28 sept. 2019 à 00:28
bonjour, tu dois commencer par faire une première requete qui te retourne, par joueur, le nombre de matchs joués.
ensuite une seconde requete qui te retourne le maximum du nombre de matchs retournés par la première
puis une troisième requete combinant les deux premières

il peut être utile de préciser le logiciel de base de données,
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
Modifié le 28 sept. 2019 à 01:06
Le logiciel est SQL +;
la commande qui retourne par joueur, le nombre de matchs joués.
 select count(Datematch), J.prenomnomJ from joueur J, stats S where J.prenomnomJ=S.prenomnomS group by J.prenomnomJ, equipejoueur;



Après ça se complique pour la 2nd requete
  select max(count(Datematch)) from stats S, joueur J where S.prenomnomS=J.prenomnomJ group by prenomnomJ;


et pour la 3eme ça me sort une erreur ...
 select count(Datematch), J.prenomnomJ from joueur J, stats S where J.prenomnomJ=S.prenomnomS group by J.prenomnomJ, equipejoueur having  select max(count(Datematch)) from stats S, joueur J where S.prenomnomS=J.prenomnomJ group by prenomnomJ;  


J'ai aussi essayé comme ceci :
 select prenomnomS, max(count(Datematch)) from stats S, joueur J where S.prenomnomS=J.prenomnomJ group by prenomnomJ;


et j'ai l'erreur suivante :
 ORA-00937: not a single-group group function
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
Modifié le 28 sept. 2019 à 10:23
j'ai aussi tester en utilisant UNION qui permet d'unir 2 requêtes cepandant cela me sort aussi un message d'erreur du type :
le bloc de requête a un nombre incorrect de colonnes de résultat


la requête est :
 select max(count(Datematch)) from stats S, joueur J where S.prenomnomS=J.prenomnomJ group by prenomnomS UNION select count(Datematch), J.prenomnomJ from joueur J, stats S where J.prenomnomJ=S.prenomnomS group by J.prenomnomJ, equipejoueur;
0
yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
28 sept. 2019 à 10:25
pourquoi utilises-tu la table joueur dans la première requête?
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
28 sept. 2019 à 10:56
oui c'est vrai que c'est inutile je peut tout simplement faire :
select count(Datematch), S.prenomnomS from stats S group by S.prenomnomS, equipejoueur;

Cependant la commande avec union ne fonctionne toujours pas ...
0
yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
28 sept. 2019 à 11:03
fait maintenant pour la deuxième requête, comme tu as fait pour la première.
pour les deux, ajoute une clause AS pour clairement nommer chaque champ retourné.
teste les deux requêtes, elle serviront de base pour la troisième.
0