Besoin d'aide pour une requete SQL
archaon
-
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.
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
-
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. :) -
Sous Microsoft SQL Server, je ferais:
select top 3 salaire from latable ORDER BY salaire DESC
ou bienselect top 3 * from latable ORDER BY salaire DESC
-
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 -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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... -
select employee, salaire
from
(
select distinct salaire
from table
order by 1 desc
)
where rownum <= 3-
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. -
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>
-