0

私はオラクルが初めてです。firstnameサブクエリを使用して、テーブルからレコードの 2 番目の最大給与を取得する必要があります。以下のクエリを試しました:

select max(salary) 
 from employees 
where salary > (select max(salary) 
                  from empoloyees);

このクエリは、テーブルから 2 番目の最大給与を取得するために使用されます。firstname次に、2 番目の給与レコードを取得する必要があります。

firstname   salary
-------------------
mani         45666 
vijay        50000 
sanjay       65000
4

3 に答える 3

0

これにはdense_rankを使用できます。

select  firstname, salary
  from (select /*+ first_rows(2) */ firstname, salary, 
               dense_rank() Over (order by salary desc) r
          from employees)
 where r = 2;

first_rowsヒントは、インデックス((salary)または(salary、firstname)のインデックス)を使用するのに役立ちます。2人が同じ給与を共有している場合、これは1行を超える可能性があります(and rownum = 1ランダムに1つだけ選択するために追加できます) )。

于 2013-01-06T21:33:38.973 に答える