Besoin d'aide pour une requete SQL

archaon -  
 archaon -
bonjours à tous.

voilà, je dois ecrire une requete SQL qui dans une table contenant un numeroo d'employé numemp et son salaire salaire, dois retourner les 3 plus gros salaires de la table...

un petit challenge pour ceux qui aiment se lancer quelques défis (en tout cas, pour moi, c'en est un !!!)

merci à ceux qui veulent y reflechir et me transmettre leur solution.

6 réponses

Utilisateur anonyme
 
Salut,
Quel est le SGBD ?
Avec mysql, je ferais:
SELECT salaire FROM latable ORDER BY salaire ASC LIMIT 0,3


Wouala...

Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
Utilisateur anonyme
 
Youps, petite erreur...

SELECT salaire FROM latable ORDER BY salaire DESC LIMIT 0,3


Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
Sous Microsoft SQL Server, je ferais:
select top 3 salaire from latable ORDER BY salaire DESC

ou bien
select top 3 * from latable ORDER BY salaire DESC
0
archaon
 
merci beaucoup. je m'excuse mais j'ai en effet oublié quelques informations très importante. je travaille sous Oracle 9i (sql*plus) et je dois le faire sous la forme de requetes syncronisée.

je vous remercie.

Archaon
0
archaon
 
merci.
en effet j'ai oublié qq info.
je travaille sous sql*plus (Oracle 9i).
de plus, je dois le fairesous la forme de requetes syncronisées..

merci encore

archaon
0
aabricotier
 
salut archaon
essai toujours ca , je ne l'ai pas essayé mais ...

select * from matable where salaire >= (
select max(salaire) from matable where salaire not in (
select max(salaire) from matable where salaire not in (
select max(salaire) from matable )))
0
archaon > aabricotier
 
merci beucoup.
ta requete est presque parfaite. je viens de la tester mais elle ne retourne que les 2 plus gros salaires.
mais je pense que je vais pouvoir me débrouiller avec ça.

merci encore!!!
0
archaon > aabricotier
 
ça y est. en fait il suffisait juste de rajouter encore une fois


select max(salaire) from matable where salaire not in (

merci encore de ton aide aabricotier.
0
aabricotier > archaon
 
don ca doit etre ca

select * from matable where salaire >= (
select max(salaire) from matable where salaire not in (
select max(salaire) from matable where salaire not in (
select max(salaire) from matable where salaire not in (
select max(salaire) from matable ))))
0
archaon > aabricotier
 
en fait je crois que c'est pas aussi simple.
parce que si les 4 plus gros salaires sont 2200, 2200, 2000, 2000,
cette requette retournera les 4 alors qu'il n'en faut que 3...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
archaon
 
du nouveau : le probleme se complique un peu plus.
il faut que ce soit fait à l'aide de requetes syncronisées et avec une jointure entre le inner et le outter. Donc d'apres ce que je comprends, seules 2 requetes syncronisées suffiraient à le faire...
0
yanban
 
select employee, salaire
from
(
select distinct salaire
from table
order by 1 desc
)
where rownum <= 3
0
archaon
 
merci.
mais ta requete ne marche pas lorsque dans les 3 plus gros salaires, 2 ou les 3 sont identiques.
De plus, la réponse demandée doit comporter une jointure comme par exemple :

select *
from lemp outter
where outter.salaire >= ( select max(inner.salaire)
from lemp inner
where outter.salaire = inner.salaire)
;

merci quand meme. c'est tres sympa.
0
yanban
 
Je ne sais pas par quoi tu veux passer mais à mon avis là c'est la solutioon la plus simple :

SQL> select sal, empno from emp order by sal desc;

SAL EMPNO
---------- ----------
5000 7839
3000 7788
3000 7902
2975 7566
2850 7698
2450 7782
1600 7499
1500 7844

Donc là on vt récuperr 7839,7788 et 7902
on fait :
SQL> select *
2 from ( select SAL, empno
3 from EMP
4 order by 1 desc )
5 where rownum <= 3
6 ;

SAL EMPNO
---------- ----------
5000 7839
3000 7788
3000 7902

SQL>
0
archaon > yanban
 
il est vrai que ta requete marche.

mais le probleme c'est qu'on me demande quelque chose de précis...


en plus, je n'ai aucune idée de ce que inner et outter veulent dire dans des requetes syncronisées.

je te remercie quand meme bcp de ton aide.
0