1

私はOracleサブクエリを実践しています..(私はOracleが初めてです。)

質問: 各部門で最も高収入の従業員を見つけますか?

以下の私のクエリは機能します(ただし、正しい結果が得られたとしても、それほど良くないと感じています)

select e.deptid, e.name, e.salary 
from employee e 
where e.salary = (select max(salary) 
                  from employee b 
                  where b.deptid = e.deptid )

他に簡単な方法はありますか?(内部結合または他の方法を使用していますか?)

また、私も疑問に思っています: サブクエリを使用する代わりに内部結合を使用する必要があるのはいつですか? 内部結合の代わりにサブクエリを使用する必要があるのはいつですか?

4

3 に答える 3

0

以下のような別のクエリがあります。

select dept_id, fname,salary 
from (select dept_id, fname,salary, 
      rank() over (order by salary desc) ranking 
      from department d, employee e 
      where d.dept_id = e.deptid) where ranking=1;

上記は正しいと思いますが、上記のクエリには疑問があります。クエリで結合を使用していませんが、2つのテーブルから列を取得することはできます..(結合を使用しないのですか?)

于 2013-04-14T10:03:24.760 に答える