-1

MAX 関数を使用せずに、給与が最も高い従業員を取得するクエリを実行する必要があります。私はそれを行う方法を検索し、「rownum」と「order by」を組み合わせたものを見つけましたが、これを正しく行うには、from 句でサブクエリを実行する必要があります。これは教師によって禁止されているため、実行できません。

誰かが解決策を知っていますか?

私の英語に感謝し、すみません。

4

4 に答える 4

2

あまり使用されない SEMI-JOIN を使用できます。

WHERE employee.salary >= ALL (...subquery...)

など、他にも多くの可能性がありますNOT EXISTS

于 2013-02-15T16:58:50.060 に答える
1
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
于 2013-02-15T17:19:45.850 に答える
0
Select employee FROM 
   (Select * FROM tblEmployees ORDER BY Salary DESC)
       Where rownum = 1;

ランクまたは最大を使用せずに、給与が最も高い従業員を返します。

于 2013-02-15T18:40:55.933 に答える
0
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句でサブクエリを使用することでも使用することでもありません (ただし、共通テーブル式を使用することは、「サブクエリなし」の要件を回避する方法であると主張できます)。

于 2013-02-15T19:45:27.440 に答える