Isoler grace à TOP les 5 plus fortes valeurs mais sur plusieurs Agrég?

Isoler grace à TOP les 5 plus fortes valeurs mais sur plusieurs Agrég? - SQL/NoSQL - Programmation

Marsh Posté le 03-03-2008 à 14:14:19    

Bonjour,
Le titre est pas clair , je sais mais la question est simple.
Imaginons un lycée avec 3 classes allant de la seconde à la terminale.
Je souhaite pour chacun des niveaux Récupérer les 3 meilleurs notes...Comment faire?
 
Exple:
 
Jean seconde 15
Marc seconde 14
André seconde 13
Jean Luc 1e 12.5
Stephanie 1e 11
Lucie 1e 10
Audrey Terminale 15
Jean Terminale 15
Louis Terminale 15
 
 
Je sais le faire classe par classe en 3 requetes et 3 TOP mais pas en une seule :(


Message édité par PETOZAK le 03-03-2008 à 14:20:56
Reply

Marsh Posté le 03-03-2008 à 14:14:19   

Reply

Marsh Posté le 03-03-2008 à 14:22:25    

Au hasard :
 
Sous-requêtes ?
UNION ?
Regrouper les 3 jeux d'enregistrement résultant lors de l'affichage et non de la collecte des données ?


Message édité par kao98 le 03-03-2008 à 14:22:37

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 03-03-2008 à 14:29:42    

UNION non car mon nombre de classes est variables...(c'est juste un exemple) donc faire 10 Union pour 10 niveau c pas génial.
 
Par contre si tu as une syntaxe de sous requête , je suis preneur...j'ai tout tenté et le TOP 5 n'arrive pas à comprendre donne moi les TOP 5 pour chaque niveau (1e , seconde , 3eme...) se trouvant dans la table Niveaux mais bien le TOP 5 en absolu : en d'autre terme les 5 meilleures notes toutes classes confondues... :'(

Reply

Marsh Posté le 03-03-2008 à 14:39:19    

Comme ça, vite-fait, sans avoir tester (je ne suis vraiment pas sûr de ce que ça peut donner, là, en y repensant, j'ai même quelques doutes :o) :

Code :
  1. SELECT c.classe, e.*
  2. FROM classes c RIGHT JOIN (SELECT TOP 5 eleve.nom, eleve.classe FROM eleves WHERE eleve.classe=c.classe) e ON c.classe = e.classe


 
Sinon, selon ton sgbd, y'a aussi possibilité d'écrire une stored proc qui te retourne le top 5 d'une classe donnée, que tu peux ensuite appeler depuis une autre requête destinée à t'afficher le résultat que tu veux.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 03-03-2008 à 16:23:30    

Quel sgbd? Pour oracle tu as tous les exemples que tu veux là-dedans : http://www.oracle.com/technology/o [...] sktom.html


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-03-2008 à 09:46:00    

Merci Kao98 voila ce que j'ai fait pour ce que ça interresse
INSERT INTO XLS_Déviation_Top_X ( [Sous-jacent], [Section], Déviation, ID )
SELECT VD1.SousJacentF, VD1.Book, VD1.SommeDeSensi, VD1.IdF
FROM Vue_Déviation AS VD1
WHERE ((((SELECT count(VD2.SousJacentF)  from Vue_Déviation AS VD2  WHERE VD1.Book =VD2.Book AND  VD1.AsofDate= VD2.AsofDate AND VD2.DéviationABS>=VD1.DéviationABS))<6));

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed