Obtenga la fila superior después de ordenar en Oracle Subquery

Tengo un alumno de mesa (identificación, nombre, departamento, edad, puntaje). Quiero encontrar al estudiante más joven que tenga el puntaje más alto (entre los estudiantes más jóvenes) de cada departamento. En SQL Server, puedo usar el siguiente SQL.

select * from student s1 
where s1.id in 
(select s2.id from student s2 
where s2.department = s1.department order by age asc, score desc top 1).

Sin embargo, en Oracle, no puede usar el orden por cláusula en subconsulta y no hay límite / palabra clave superior. Tengo que unirme a la tabla de estudiantes dos veces para consultar el resultado. En Oracle, uso el siguiente SQL.

select s1.* from student s1, 
(select s2.department, s2.age, max(s2.score) as max_score from student s2, 
(select s3.department, min(s3.age) as min_age from student s3 group by s3.department) tmp1 where 
s2.department = tmp1.department and s2.age = tmp1.min_age group by s2.department, s2.age) tmp2 
where s1.department =tmp2.department and s1.age = tmp2.age and s1.score=tmp2.max_score

¿Alguien tiene alguna idea para simplificar el SQL anterior para Oracle.

Respuestas a la pregunta(4)

Su respuesta a la pregunta