データベースを操作する際、クエリの結果を「順序付けて表示」することは、レポート作成やデータ分析で非常に重要です。SQLのORDER BY
句を使えば、データを昇順や降順、さらには複数の条件で自由自在に並べ替えることができます。
この記事では、ORDER BY
句の基本から実践例までを徹底解説します。初心者の方でもすぐに使えるように、図や具体例を交えた丁寧な説明を心がけました。
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テーブル
ENAME | JOB | SAL | DEPTNO |
---|---|---|---|
SMITH | CLERK | 800 | 20 |
ALLEN | SALESMAN | 1600 | 30 |
KING | PRESIDENT | 5000 | 10 |
CLARK | MANAGER | 2450 | 10 |
3.1 基本例:昇順で並べ替える
従業員の給与(SAL
)を昇順で並べ替えるには、次のように記述します。
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL;
結果:
ENAME | SAL |
---|---|
SMITH | 800 |
ALLEN | 1600 |
CLARK | 2450 |
KING | 5000 |
3.2 応用例:降順で並べ替える
今度はSAL
を降順に並べ替えてみましょう。
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC;
結果:
ENAME | SAL |
---|---|
KING | 5000 |
CLARK | 2450 |
ALLEN | 1600 |
SMITH | 800 |
3.3 複数列で並べ替える
複数の基準でデータを並べ替えたい場合、ORDER BY
句に複数の列を指定します。たとえば、部署番号(DEPTNO
)ごとに昇順に並べ、さらに同じ部署内では給与(SAL
)を降順に並べたい場合:
SELECT ENAME, DEPTNO, SAL
FROM EMP
ORDER BY DEPTNO ASC, SAL DESC;
結果:
ENAME | DEPTNO | SAL |
---|---|---|
KING | 10 | 5000 |
CLARK | 10 | 2450 |
SMITH | 20 | 800 |
ALLEN | 30 | 1600 |
3.4 列番号を使った並べ替え(推奨されない)
列番号を使うと簡潔ですが、列名よりも可読性が劣ります。以下は、3列目(SAL
)を昇順、1列目(ENAME
)を降順で並べる例です。
SELECT ENAME, SAL, DEPTNO
FROM EMP
ORDER BY 3, 1 DESC;
3.5 NULL値の扱い
ORDER BY
句を使用する際、NULL
値の位置を指定することも可能です。
NULLS FIRST
:NULL
値を先頭に並べる。NULLS LAST
:NULL
値を最後に並べる(デフォルト設定)。
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL NULLS FIRST;
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
句の基本から実践的な使い方までを解説しました。この知識を使えば、データを自由に整理し、分析やレポート作成に活かすことができます。
次の記事では、GROUP BY
句との組み合わせや高度な集計方法について解説します。お楽しみに!
[参考]
Oracle Database SQL言語リファレンス 19c
コメント