Conseguir las primeras 100 personas contratadas en la firma
En primer lugar, tenga cuidado con los casos de empate que se incluyen en los resultados de ambas consultas a continuación. p.ej. incluso si tiene empleados con la misma fecha de contratación, se incluyen en las listas, lo que significa que las listas tienen al menos 100 personas.
Si la versión de su base de datos es 12c-
, entonces necesita usar una subconsulta para devolver el resultado de dense_rank()
función :
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;
Si la versión de su base de datos es 12c+
, entonces no necesita usar una subconsulta por fetch
cláusula:
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;
Preste atención para su caso que use partition by
la cláusula es incorrecta y debe eliminarse dentro de dense_rank()
la expresión de la función y el orden de las fechas de contratación no debe ser descendente sino ascendente.
Demostración de los 10 mejores empleados