SQLのORDER BY句をマスター!初心者でも簡単に並べ替えを理解できる

Oracle Master Silver

データベースを操作する際、クエリの結果を「順序付けて表示」することは、レポート作成やデータ分析で非常に重要です。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テーブル

ENAMEJOBSALDEPTNO
SMITHCLERK80020
ALLENSALESMAN160030
KINGPRESIDENT500010
CLARKMANAGER245010

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

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

SELECT ENAME, SAL
FROM EMP
ORDER BY SAL;

結果:

ENAMESAL
SMITH800
ALLEN1600
CLARK2450
KING5000

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

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

SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC;

結果:

ENAMESAL
KING5000
CLARK2450
ALLEN1600
SMITH800

3.3 複数列で並べ替える

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

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

結果:

ENAMEDEPTNOSAL
KING105000
CLARK102450
SMITH20800
ALLEN301600

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

コメント

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