chers tous
j'ai une table qui contient les donnees des etudiant(numero, nom, moyenne), mais je souhaiterais classer ces etudiants par ordre de merite en tenant compte des exaequo.merci de l'aide.
chers tous
j'ai une table qui contient les donnees des etudiant(numero, nom, moyenne), mais je souhaiterais classer ces etudiants par ordre de merite en tenant compte des exaequo.merci de l'aide.
Bonjour. voici la requête qui affiche les étudiants par ordre de moyenne :
maintenant je ne sais si tu veux écrire une programme PLSQL ou une procédure "Classer_Etud" qui classera les étudiants à ce moment là je pense qu'il faut rajouter une colonne "Classmt" dans la table etudiant. Que penses-tu? cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part select numero,nom,moyenne from etudiant order by moyenne;
Merci de nous donner un exemple avec quelques données et le résultat que vous souhaitez.
je prend s les etudiants de 1 a 3 avec les moyennes respectives de 10,12,15
etudiant 1 est 3ieme
etudiant 2 est 2ieme
etudiant 3 est 1ier
il s'agit de les classer
Dans ce cas
row_number() est une fonction analytique .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select num, nom, moyenne, row_number() over (order by moyenne desc) classement from test order by moyenne asc; NUM NOM MOYENNE CLASSEMENT ---------- ------------------------------ ---------- ---------- 1 1 10 3 2 2 12 2 3 3 15 1
merci beaucoup mais malheureusement, j'execute en pl sql oracle, il me genere des erreurs,est ce ROW_NUMBER() la bonne commande?
Pouvez-vous nous donner:
- votre version d'Oracle
- la partie de code où vous avez mis la requête ?
Merci.
oracle version 9i
la partie du code est SQL plus
Je n'arrive pas à reproduire votre problème, chez moi ça marche en 9i:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 set serveroutput on size 1000000; select * from v$version; begin for c in (select num, nom, moyenne, row_number() over (order by moyenne desc) classement from test order by moyenne asc) loop dbms_output.put_line(c.classement); end loop; end; BANNER ---------------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production PL/SQL Release 9.2.0.6.0 - Production CORE 9.2.0.6.0 Production TNS for HPUX: Version 9.2.0.6.0 - Production NLSRTL Version 9.2.0.6.0 - Production 5 rows selected. 3 2 1 PL/SQL procedure successfully completed.
Partager