Um die ersten 100 Mitarbeiter in der Firma einzustellen
Zuallererst:Seien Sie vorsichtig mit den Unentschieden-Fällen, die in den Ergebnissen beider Abfragen unten enthalten sind. z.B. Selbst wenn Sie Mitarbeiter mit demselben Einstellungsdatum haben, werden sie in die Listen aufgenommen, was bedeutet, dass Listen mindestens 100 Personen enthalten.
Wenn Ihre Datenbankversion 12c-
ist , dann müssen Sie eine Unterabfrage verwenden, in der das Ergebnis von dense_rank()
zurückgegeben wird 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;
Wenn Ihre Datenbankversion 12c+
ist , dann brauchen Sie wegen fetch
keine Unterabfrage zu verwenden Klausel :
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;
Beachten Sie für Ihren Fall, dass Sie partition by
verwenden -Klausel ist falsch und sollte innerhalb von dense_rank()
entfernt werden Der Ausdruck der Funktion und die Reihenfolge der Einstellungsdaten sollten nicht absteigend, sondern aufsteigend sein.