Envisagez la table Oracle emp
. Je voudrais obtenir les employés avec le meilleur salaire avec department = 20
et job = clerk
. Supposons également qu'il n'y a pas de colonne "empno" et que la clé primaire implique un certain nombre de colonnes. Vous pouvez le faire avec:SQL: fonction d'agrégat et groupe par
select * from scott.emp
where deptno = 20 and job = 'CLERK'
and sal = (select max(sal) from scott.emp
where deptno = 20 and job = 'CLERK')
Cela fonctionne, mais je dois reproduire le test deptno = 20 et travail = « COMMIS », que je voudrais éviter. Existe-t-il un moyen plus élégant d'écrire ceci, peut-être en utilisant un group by
? BTW, si cela est important, j'utilise Oracle.
Pas de problème, j'ai édité la réponse :) ça devrait être un IN –