現在、Oracleインスタンスが手元にないため、これをテストしていません:
select *
from (select emp_id, name, occupation,
rank() over ( partition by occupation order by emp_id) rank
from employee)
where rank <= 3
ランクの仕組みに関するリンクは次のとおりです。http://www.psoug.org/reference/rank.html