MAX 関数を使用せずに、給与が最も高い従業員を取得するクエリを実行する必要があります。私はそれを行う方法を検索し、「rownum」と「order by」を組み合わせたものを見つけましたが、これを正しく行うには、from 句でサブクエリを実行する必要があります。これは教師によって禁止されているため、実行できません。
誰かが解決策を知っていますか?
私の英語に感謝し、すみません。
あまり使用されない SEMI-JOIN を使用できます。
WHERE employee.salary >= ALL (...subquery...)
など、他にも多くの可能性がありますNOT EXISTS
。
SELECT deptno, e1.empno, e1.sal
FROM scott.emp e1
WHERE e1.sal >= ALL (SELECT e2.sal
FROM scott.emp e2
WHERE e2.deptno = 20 -- or e2.deptno = e1.deptno
)
ORDER BY deptno
/
DEPTNO EMPNO SAL
------------------------
10 7839 5000
20 7788 3000
20 7902 3000
Select employee FROM
(Select * FROM tblEmployees ORDER BY Salary DESC)
Where rownum = 1;
ランクまたは最大を使用せずに、給与が最も高い従業員を返します。
with emp_data as (
select empno,
sal,
deptno,
row_number() over (order by sal desc) as rn
from emp
)
select *
from emp_data
where rn = 1;
それmax()
は、from
句でサブクエリを使用することでも使用することでもありません (ただし、共通テーブル式を使用することは、「サブクエリなし」の要件を回避する方法であると主張できます)。