Organiser par maximum une table contenant COUNT avec MAX [Résolu/Fermé]

Signaler
Messages postés
1175
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
20 novembre 2019
-
Messages postés
1175
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
20 novembre 2019
-
Bonjour, j'ai la base suivante :
FONCTION (Numfonct, libfonct, salaire)
SERVICE (Numserv,libserv)
EMPLOYE (Numemp, nom, prenom,numfonct,numserv)

Je voudrai afficher pour chaque service, la fonction dont le nombre d'employés l'occupant est le plus grand.
Voici ma démarche :
J'ai la requête suivante :
SELECT libserv,libfonct, COUNT(numemp) 
FROM EMPLOYE INNER JOIN SERVICE ON EMPLOYE.NUMSERV=SERVICE.NUMSERV INNER JOIN FONCTION ON EMPLOYE.NUMFONCT=FONCTION.NUMFONCT
GROUP BY libserv, libfonct
ORDER BY libserv;
qui me donne les services, les fonctions ainsi que leur nombre d'employé respectif. Mais je voudrai pouvoir organiser ces données pour n'avoir que le maximum des de chaque service, mais je ne sais pas comment faire ?!
Je vous remerci de m'aider





pense à ta vie et pense à l'eternité

1 réponse

Messages postés
2245
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
22 février 2020
1 307
Bonjour,

je ne suis pas certaine que çà marche mais essayez ceci

SELECT libserv,libfonct, COUNT(numemp)
FROM EMPLOYE INNER JOIN SERVICE ON EMPLOYE.NUMSERV=SERVICE.NUMSERV INNER JOIN FONCTION ON EMPLOYE.NUMFONCT=FONCTION.NUMFONCT
GROUP BY libserv, libfonct,
order by count(*) desc limit 1
Messages postés
1175
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
20 novembre 2019
20
Désolé ça ne marche pas ;(. En plus Oracle ne prend pas en charge "limit"
Messages postés
1175
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
20 novembre 2019
20
ça y est, j'ai trouvé la solution, c'est :
select libfonct,libserv,count(numemp) 
from ((employe natural join service s1) natural join fonction f1)
group by libserv,libfonct
having count(numemp)=(select max(count(numemp)) from ((employe natural join service) natural join fonction)
where libfonct=f1.libfonct group by libserv,libfonct);


Et ça fonctionnent nickelement