Untuk mendapatkan 100 orang pertama yang dipekerjakan di perusahaan
Pertama-tama, Hati-hati dengan kasus dasi yang disertakan dalam hasil kedua kueri di bawah ini. misalnya bahkan jika Anda memiliki karyawan dengan tanggal perekrutan yang sama, mereka termasuk dalam daftar, artinya daftar tersebut memiliki setidaknya 100 orang.
Jika versi Database Anda adalah 12c-
, maka Anda perlu menggunakan subquery untuk mengembalikan hasil dense_rank()
fungsi :
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;
Jika versi Database Anda adalah 12c+
, maka Anda tidak perlu menggunakan subquery demi fetch
klausa :
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;
Perhatikan kasus Anda yang menggunakan partition by
klausa salah dan harus dihapus dalam dense_rank()
ekspresi fungsi, dan urutan tanggal sewa tidak boleh turun tetapi naik.
Demo untuk 10 Karyawan Teratas