最初の100人を会社に雇うために
まず、以下の両方のクエリの結果にタイケースが含まれていることに注意してください。例えば雇用日が同じ従業員がいる場合でも、それらはリストに含まれます。つまり、リストには少なくとも100人が含まれます。
データベースのバージョンが12c-
の場合 、次に、dense_rank()
の結果を返すサブクエリを使用する必要があります 機能:
select department_name, department_id, first_name, hire_date, salary
from
(
select d.department_name, d.department_id, e.first_name, e.hire_date, e.salary,
dense_rank() over ( order by hire_date ) as e_rank_hire
from Dtable_department d
join Etable_employee e
on e.department_id = d.department_id
)
where e_rank_hire <= 100
order by e_rank_hire;
データベースのバージョンが12c+
の場合 、fetch
のためにサブクエリを使用する必要はありません 条項:
select d.department_name, d.department_id, e.first_name, e.hire_date, e.salary
from Dtable_department d
join Etable_employee e
on e.department_id = d.department_id
order by hire_date
fetch first 100 rows with ties;
partition by
を使用する場合に注意してください 句が間違っているため、dense_rank()
内で削除する必要があります 関数の式、および採用日の順序は、降順ではなく昇順である必要があります。