Oracleで表示する件数を絞って表示する方法

Oracleでは件数を絞ってSELECTできないと言われたので、
rownumを用いてSELECTする方法メモ。

表示する件数を決めて表示するSQL

select * from 表名
  where rownum <= 件数

rownumを使う場合の注意点

order by句を使う場合、rownumの条件で抽出された値の中でソート処理が実施されてしまうため、
望んだ結果が得られない。
例えば、

select username from dba_users
  where account_status='OPEN' 
    and rownum <= 5
      order by username asc;

ではダメで、dba_usersから5件SELECTした結果をソートしてしまう。
正しくソートした結果を表示するためには、下記の通り検索する表を副問い合わせで
呼び出す必要がある。

select username from (
  select username from dba_users
    where account_status='OPEN' 
      order by username asc)
  where rownum <= 5;