Per ottenere le prime 100 persone assunte nell'azienda
Prima di tutto, nei risultati di entrambe le query di seguito sono inclusi i casi di pareggio. per esempio. anche se hai dipendenti con la stessa data di assunzione, sono inclusi negli elenchi, il che significa che gli elenchi hanno almeno 100 persone.
Se la versione del tuo database è 12c-
, quindi devi utilizzare una sottoquery in cui restituire il risultato di dense_rank()
funzione :
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;
Se la versione del tuo database è 12c+
, quindi non è necessario utilizzare una sottoquery per il bene di fetch
clausola :
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;
Presta attenzione per il tuo caso che utilizza partition by
la clausola è sbagliata e dovrebbe essere rimossa all'interno di dense_rank()
l'espressione della funzione e le date dell'ordine di assunzione non devono essere decrescenti ma crescenti.
Demo per i primi 10 dipendenti