Dica rápida: ao contrário do que muita gente imagina, a cláusula rownum do oracle - geralmente utilizada para limitar a quantidade de registros que uma query pode trazer - não funciona corretamente caso você considere a hipótese de que o atributo ROWNUM é uma propriedade da tabela.
Para ficar mais fácil o entendimento, imagine a seguinte query:
select * from <tabela> where ROWNUM > 1;
Caso você execute essa query, verá que registro nenhum será trazido; isso porque, a pseudo coluna ROWNUM somente passa a existir, depois do resultSet retornar do banco; neste caso, se a a intenção é limitar os itens de um determinado select, considerando algum tipo de ordenação a forma correta do select acima seria, no caso de limitar os resultados em apenas 5 itens seria este:
select *from (select * from <tabela> order by sal desc) where ROWNUM <= 5;
Como se pode ver, primeiro é necessário trazer os registro do banco (obter o resultsSet), para que depois disso, se possa limitar a quantidade de linhas, através do ROWNUM.
Uma ótima documentação para aprofundar o entendimento desse e de outros tipos de abordagens do ROWNUM, você pode conferir em: http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html