下記テーブルから給与の上位5人を出すSQLを書くとしましょう。
出したい結果は以下のとおりです。
で、下記のようなSQLを書くともれなく不正解です。
結果は以下のとおり
これはORDER BY句が最後に実行されることに起因します。並び替える前にWHERE句の「ROWNUM <= 5」で並びが無秩序なまま5行抜き出されるわけですね。
なので、インラインビューの中で並び替えてから、5行抜き出せばいいわけです。
上記のSQLで無事取得
※追記
Oracle12cからはFETCH句というものが出ており、ORDER BY句の後ろに記述す津ことにより、上記と同様のことが可能な模様