Oracle SQLのORDER BY句をマスター!

Oracle Master Silver

データベースを操作する際、クエリの結果を「順序付けて表示」することは、レポート作成やデータ分析で非常に重要です。SQLのORDER BY句を使えば、データを昇順や降順、さらには複数の条件で自由自在に並べ替えることができます。

この記事では、ORDER BY句の基本から実践例までを徹底解説します。初心者の方でもすぐに使えるように、図や具体例を交えた丁寧な説明を心がけました。

本記事ではSCOTTサンプルスキーマを使用した例で解説します。
SCOTTサンプルスキーマは以下を実行することでインポートおよび使用が可能です。

$ sqlplus / as sysdba
SQL> @?/rdbms/admin/utlsampl.sql
$ sqlplus scott/tiger

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


1. ORDER BY句とは?なぜ重要なのか?

ORDER BY句は、SQLのクエリで取得したデータを並べ替えるための句です。並べ替えには、以下のような目的があります。

  • データの視認性向上: 大量のデータから重要な情報を素早く見つけられる。
  • レポート作成: 順位付けやトレンド分析が可能になる。
  • データの妥当性確認: データの範囲や分布を確認する。

2. 基本構文と使い方

まずは基本的な構文を確認しましょう。

SELECT 列名1, 列名2, ...
FROM テーブル名
ORDER BY 列名 [ASC|DESC];
  • ASC: 昇順(デフォルト設定)。例:1, 2, 3, …
  • DESC: 降順。例:3, 2, 1, …

3. ORDER BY句を使った具体例

ここでは、OracleデータベースのSCOTTスキーマに含まれるEMPテーブルを使用します。

サンプルデータ: EMPテーブル

SQL> SELECT ename,job,sal,deptno
2 FROM emp;

ENAME JOB SAL DEPTNO
---------- --------- ---------- ----------
SMITH CLERK 800 20
ALLEN SALESMAN 1600 30
WARD SALESMAN 1250 30
JONES MANAGER 2975 20
MARTIN SALESMAN 1250 30
BLAKE MANAGER 2850 30
CLARK MANAGER 2450 10
SCOTT ANALYST 3000 20
KING PRESIDENT 5000 10
TURNER SALESMAN 1500 30
ADAMS CLERK 1100 20
JAMES CLERK 950 30
FORD ANALYST 3000 20
MILLER CLERK 1300 10

14 rows selected.

3.1 基本例:昇順で並べ替える

従業員の給与(SAL)を昇順で並べ替えるには、次のように記述します。

SELECT ENAME, SAL
FROM EMP
ORDER BY SAL;

結果:

SQL> SELECT ENAME, SAL
2 FROM EMP
3 ORDER BY SAL;

ENAME SAL
---------- ----------
SMITH 800
JAMES 950
ADAMS 1100
WARD 1250
MARTIN 1250
MILLER 1300
TURNER 1500
ALLEN 1600
CLARK 2450
BLAKE 2850
JONES 2975
SCOTT 3000
FORD 3000
KING 5000

14 rows selected.

3.2 応用例:降順で並べ替える

今度はSALを降順に並べ替えてみましょう。

SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC;

結果:

SQL> SELECT ENAME, SAL
2 FROM EMP
3 ORDER BY SAL DESC;

ENAME SAL
---------- ----------
KING 5000
FORD 3000
SCOTT 3000
JONES 2975
BLAKE 2850
CLARK 2450
ALLEN 1600
TURNER 1500
MILLER 1300
WARD 1250
MARTIN 1250
ADAMS 1100
JAMES 950
SMITH 800

14 rows selected.

3.3 複数列で並べ替える

複数の基準でデータを並べ替えたい場合、ORDER BY句に複数の列を指定します。たとえば、部署番号(DEPTNO)ごとに昇順に並べ、さらに同じ部署内では給与(SAL)を降順に並べたい場合:

SELECT ENAME, DEPTNO, SAL
FROM EMP
ORDER BY DEPTNO ASC, SAL DESC;

結果:

SQL> SELECT ENAME, DEPTNO, SAL
2 FROM EMP
3 ORDER BY DEPTNO ASC, SAL DESC;

ENAME DEPTNO SAL
---------- ---------- ----------
KING 10 5000
CLARK 10 2450
MILLER 10 1300
SCOTT 20 3000
FORD 20 3000
JONES 20 2975
ADAMS 20 1100
SMITH 20 800
BLAKE 30 2850
ALLEN 30 1600
TURNER 30 1500
MARTIN 30 1250
WARD 30 1250
JAMES 30 950

14 rows selected.

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


3.4 列番号を使った並べ替え(推奨されない)

列番号を使うと簡潔ですが、列名よりも可読性が劣ります。以下は、3列目(SAL)を昇順、1列目(ENAME)を降順で並べる例です。

SELECT ENAME, SAL, DEPTNO
FROM EMP
ORDER BY 3, 1 DESC;

結果:

SQL> SELECT ENAME, SAL, DEPTNO
2 FROM EMP
3 ORDER BY 3, 1 DESC;

ENAME SAL DEPTNO
---------- ---------- ----------
MILLER 1300 10
KING 5000 10
CLARK 2450 10
SMITH 800 20
SCOTT 3000 20
JONES 2975 20
FORD 3000 20
ADAMS 1100 20
WARD 1250 30
TURNER 1500 30
MARTIN 1250 30
JAMES 950 30
BLAKE 2850 30
ALLEN 1600 30

14 rows selected.

3.5 NULL値の扱い

ORDER BY句を使用する際、NULL値の位置を指定することも可能です。

  • NULLS FIRST: NULL値を先頭に並べる。
  • NULLS LAST: NULL値を最後に並べる(デフォルト設定)。
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL NULLS FIRST;

結果:

SQL> SELECT ENAME, SAL
2 FROM EMP
3 ORDER BY SAL NULLS FIRST;

ENAME SAL
---------- ----------
SMITH 800
JAMES 950
ADAMS 1100
WARD 1250
MARTIN 1250
MILLER 1300
TURNER 1500
ALLEN 1600
CLARK 2450
BLAKE 2850
JONES 2975
SCOTT 3000
FORD 3000
KING 5000

14 rows selected.

4. 実務での活用ポイント

レポート作成

売上ランキングを作成し、上位10位を抽出したい場合:

SELECT PRODUCT_NAME, SALES
FROM SALES_TABLE
ORDER BY SALES DESC
FETCH FIRST 10 ROWS ONLY;

トレンド分析

時間ごとに売上を並べ、最新のトレンドを分析します。

SELECT SALE_DATE, TOTAL_SALES
FROM DAILY_SALES
ORDER BY SALE_DATE DESC;

パフォーマンスの最適化

大量データを並べ替える場合はインデックスを活用し、並べ替え対象列に適切なインデックスを作成しましょう。


5. 注意点

  • 大規模データでのパフォーマンス: 並べ替えにはリソースが必要です。並べ替え対象が大規模な場合は、WHERE句で対象を絞るか、インデックスを活用しましょう。
  • 可読性を優先: 列番号ではなく列名を使い、クエリの意図を明確にしましょう。

6. まとめと次のステップ

この記事では、ORDER BY句の基本から実践的な使い方までを解説しました。この知識を使えば、データを自由に整理し、分析やレポート作成に活かすことができます。

[参考]
Oracle Database SQL言語リファレンス 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました