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.
A voir également:
- Besoin d'aide pour une requete SQL
- Logiciel sql - Télécharger - Bases de données
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Cherche des haricot vendez les moi ✓ - Forum DS
- Sql (+) - Forum Programmation
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
6 réponses
Salut,
Quel est le SGBD ?
Avec mysql, je ferais:
Wouala...
Kalamit,
Parle à ma culasse, mon carter est malade. :)
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:
ou bien
select top 3 salaire from latable ORDER BY salaire DESC
ou bien
select 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
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
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...
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
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.
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>
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>
Kalamit,
Parle à ma culasse, mon carter est malade. :)