DB

Oracle上でソートして上位n件のデータを取得してみた

データベース上のデータを抽出する際、ある一定の規則でソートして上位n件のデータを取得したい、という場合がある。今回は、Oracle上で、以前作成したUSER_DATAテーブル上で、IDの昇順にソートし上位5件を取得するSQLを作成してみたので、共有する。

前提条件

Oracle XEのインストールが完了し、以下のUSER_DATAテーブルが作成済であること。
前提条件_1

また、USER_DATAテーブルに以下のデータが追加されていること。

前提条件_2

データを加工しソートし取得するSQL

前提条件で作成済のUSER_DATAテーブルのデータを、生年月日と性別を加工した上で、IDの昇順にソートするSQLの実行結果は、以下の通り。

データを加工しソートし取得するSQL実行結果
削除または保存していないWordドキュメントの復元方法【4DDiG Windowsデータ復元】ワード(Word)データ等のファイルを誤って削除してしまった場合は、通常はデータの復元ができませんが、4DDiGというソフトウェアを利用...

データを加工しソート後に上位5件を取得するSQL

USER_DATAテーブルのデータを、生年月日と性別を加工し、IDの昇順にソートした後で、上位5件のみを取得するSQLの実行結果は、以下の通り。このときのソート処理は、副問い合わせの中で行う必要がある。

データを加工しソート後に上位5件を取得するSQL実行結果



「Envader」はLinuxコマンドやDatabase SQL等のスキルを、環境構築不要で習得できる学習サイトだった「Envader」は、ITエンジニアとしてよく使うLinuxコマンドやDatabase SQL等のスキルを、解説を読んだ上で、問題を解き...

ROW_NUMBER 分析関数を利用したSQL

先ほどのSQLと同様のことを、ROW_NUMBER 分析関数を利用して実行した結果は、以下の通り。このとき、ROW_NUMBER分析関数内のORDER BY句で指定した順にデータがソートされることも確認できる。

ROW_NUMBER 分析関数を利用したSQL実行結果

要点まとめ

  • Oracle上でソートして上位n件のデータを取得するには、SQLの副問い合わせ内でソートした後でROWNUM関数で上位n件を取得するか、ROW_NUMBER 分析関数を利用しすればよい。