[SQL]Trouver une occurrence minimale

Salut les geeks, c’est bien honteux que je fais appel à vous car je sèche devant une question de noob:
Imaginons une table Projets contenant, pour un projet donné, le numéro du département qui s’occupe du projet. Comment trouver le département qui s’occupe du plus petit nombre de projets (bref le département qui apparait le moins souvent dans la table Projets)?

Avec un select count() on pourra obtenir le nombre de projets pour chaque département, mais comment imbriquer ça proprement avec un select min? Si c’est au moins possible…

Merci de votre aide.

Mmhh ?

SELECT TOP 1 COUNT(numdep), numdep FROM projets GROUP BY numdep ORDER BY COUNT(numdep) DESC

[quote=“Styx31, post:2, topic: 49294”]Mmhh ?

SELECT TOP 1 COUNT(numdep), numdep FROM projets GROUP BY numdep ORDER BY COUNT(numdep) DESC[/quote]

ou comme ca:

mais je suis pas sur que ce soit exactement ce qu’il demande. On peut avoir la structure de la table?

[quote=“azacreel2, post:3, topic: 49294”]ou comme ca:

Marche pas sous Sql Server ça : “Cannot perform an aggregate function on an expression containing an aggregate or a subquery.”

Après ca peut dépendre du SGBD, mais la bonne version sous sql server serait :

l’habitude d’oracle :slight_smile: Pis il a pas precise le SGBD.

Marche aussi avec MySql

Marche aussi avec MySql

Quelle classe :slight_smile:

Désolé de répondre si tard :crying:
Donc ici je travaille sous Oracle, j’aurais du le préciser avant. Ben aucune requête ci-dessus ne fonctionne :slight_smile: Oracle n’aime les min() dans un count() je crois.
Je vais partir sur une solution du style:

[codebox]SELECT Numdep FROM Projets Group By Numdep HAVING COUNT(Numdep)>=ALL(…);[/codebox]

Je vous tiens au courant :cry:

euhh moi tres surpris, j’ai teste sur oracle 9.2.0.6 et ca fonctionne tres bien…

Je re-testerai demain, on tourne avec la version 10 je crois

2eme coup de pression Lupuss, ici aussi ca marche en v9. Ouais je sais t’es bien avancé maintenant.