För att få de första 100 personerna anställda i företaget
Först av allt, var försiktig med att slipsfallen ingår i resultaten av båda frågorna nedan. t.ex. även om du har anställda med samma anställningsdatum, finns de med i listorna, vilket innebär att listorna har minst 100 personer.
Om din databasversion är 12c-
, då måste du använda en underfråga för att returnera resultatet av dense_rank()
funktion :
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;
Om din databasversion är 12c+
, då behöver du inte använda en underfråga för fetch
s skull klausul:
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;
Var uppmärksam på ditt fall att använda partition by
satsen är fel och bör tas bort inom dense_rank()
funktions uttryck och ordning på anställningsdatum bör inte vara fallande utan stigande.