青の統計学-DS Playground-

ORDER BYとLIMIT: 結果を並べて確認する

Stage 1 — 第3章 | データ分析基礎カリキュラム 推定学習時間:25〜35分 | 難易度:★☆☆☆☆


この章で学ぶこと

SELECT で列を選び、WHERE で行を絞れるようになると、次に必要なのは「結果をどう見るか」です。 同じデータでも、並び順を変えるだけで発見しやすい情報が変わります。

この章では、結果を並べる ORDER BY と、表示件数を制限する LIMIT を学びます。

この章を終えると、こんなことができるようになります:

  • 売上金額や日付で結果を並べ替えられる
  • 昇順と降順を使い分けられる
  • 上位・下位のデータを確認できる
  • 大きなテーブルを安全に確認するために LIMIT を使える

1. なぜ並び替えが必要なのか

注文データをそのまま取り出すと、データベースに保存されている順番で表示されます。 しかし、その順番が分析にとって意味のある順番とは限りません。

たとえば、次のような問いに答えるには並び替えが必要です。

  • 直近の注文はどれか
  • 金額が大きい注文はどれか
  • 価格が安い商品から順に見たい
  • 新しく登録した顧客を確認したい

SQLでは、結果の並び順を ORDER BY で指定します。


2. ORDER BYの基本形

SELECT
            order_id,
            order_date,
            total_amount
          FROM orders
          ORDER BY order_date;
          

このSQLは、注文日が古い順に注文を並べます。 ORDER BY は、表示結果の最後のほうに書きます。

SELECT 列名
          FROM テーブル名
          WHERE 条件
          ORDER BY 並び替えたい列;
          

WHERE がある場合は、まず条件で行を絞り、その結果を ORDER BY で並べると考えると理解しやすいです。


3. ASCとDESC

並び替えには、昇順と降順があります。

指定 意味
ASC 小さい順・古い順・AからZ ORDER BY price ASC
DESC 大きい順・新しい順・ZからA ORDER BY price DESC

ASC は省略できます。 つまり、次の2つは同じ意味です。

ORDER BY order_date;
          
ORDER BY order_date ASC;
          

直近の注文を見たい場合は、新しい日付を上に出したいので DESC を使います。

SELECT
            order_id,
            order_date,
            total_amount
          FROM orders
          ORDER BY order_date DESC;
          

売上金額が大きい注文から見たい場合も DESC です。

SELECT
            order_id,
            customer_id,
            total_amount
          FROM orders
          ORDER BY total_amount DESC;
          

4. LIMITで表示件数を絞る

大きなテーブルをいきなり全件表示すると、結果が多すぎて確認しづらくなります。 そこで使うのが LIMIT です。

SELECT
            order_id,
            order_date,
            total_amount
          FROM orders
          LIMIT 10;
          

このSQLは、結果を10件だけ表示します。 新しいテーブルの中身を軽く確認するときに便利です。

ORDER BY と組み合わせると、上位・下位の確認ができます。

SELECT
            order_id,
            customer_id,
            total_amount
          FROM orders
          ORDER BY total_amount DESC
          LIMIT 5;
          

これは「注文金額が大きい上位5件」を取り出すSQLです。 データ分析では、集計に入る前に上位・下位の実データを見ることで、外れ値や入力ミスに気づけることがあります。


5. 複数列で並び替える

同じ値がある場合に、次の基準でさらに並べたいことがあります。

たとえば、注文ステータスごとに並べ、その中で注文日が新しい順にしたい場合です。

SELECT
            order_id,
            status,
            order_date,
            total_amount
          FROM orders
          ORDER BY status ASC, order_date DESC;
          

このSQLでは、まず status で昇順に並べます。 同じ status の中では、order_date が新しい順になります。

複数列の ORDER BY は、左から順に優先されます。


6. 実務でよく使う確認パターン

直近の注文を確認する

SELECT
            order_id,
            customer_id,
            order_date,
            status,
            total_amount
          FROM orders
          ORDER BY order_date DESC
          LIMIT 20;
          

新しいデータが正しく入っているかを確認する基本パターンです。

高額注文を確認する

SELECT
            order_id,
            customer_id,
            total_amount
          FROM orders
          WHERE status = 'completed'
          ORDER BY total_amount DESC
          LIMIT 10;
          

売上分析では、高額注文が本当に正しいデータかを見ることがあります。 外れ値があると、平均や合計に大きく影響するためです。

安い商品から確認する

SELECT
            product_id,
            product_name,
            category,
            price
          FROM products
          ORDER BY price ASC
          LIMIT 10;
          

価格の下限や0円商品が混ざっていないかを確認できます。


7. ORDER BYなしのLIMITに注意する

次のSQLは、10件だけ表示します。

SELECT
            order_id,
            order_date,
            total_amount
          FROM orders
          LIMIT 10;
          

ただし、ORDER BY がないため、「どの10件か」に明確な意味はありません。 テーブル確認には使えますが、「最新10件」や「売上上位10件」とは言えません。

意味のある上位・下位を見たいときは、必ず ORDER BYLIMIT をセットで使いましょう。


8. 並び替えは分析の発見を助ける

データを並べると、単に見やすくなるだけではありません。 異常値や重要なデータに気づきやすくなります。

  • 金額が大きい順に見ると、高額注文や入力ミスが見つかる
  • 日付が新しい順に見ると、直近のデータ反映状況がわかる
  • 価格が安い順に見ると、0円や負の価格などの異常に気づける
  • 顧客ID順に見ると、同じ顧客の注文が近くに並びやすい

集計や可視化の前に、ORDER BYLIMIT で実データを観察する習慣をつけましょう。


実務での使いどころ: まず異常値と直近データを見る

ORDER BY と LIMIT は、分析の最初にデータの雰囲気をつかむためによく使います。 たとえば、売上分析では「直近の注文」「最も高額な注文」「最も安い商品」を先に確認すると、データの癖に気づきやすくなります。

SELECT
            order_id,
            order_date,
            total_amount
          FROM orders
          ORDER BY total_amount DESC
          LIMIT 10;
          

このSQLは、高額注文の上位10件を確認する例です。 ここで見たいのはランキングそのものだけではありません。 極端に大きい金額がある場合、法人注文なのか、入力ミスなのか、キャンペーンの影響なのかを確認する入口になります。

確認パターン 実務での目的
直近順 最新データが入っているか確認する
金額の大きい順 外れ値や重要顧客を見つける
金額の小さい順 0円、異常な割引、テストデータを探す
件数制限 大量データを安全に確認する

ORDER BY なしで LIMIT だけを書くと、どの行が返るか意図が曖昧になります。 「何を優先して見るのか」を ORDER BY で明示しましょう。

ミニ演習

次の確認SQLを書いてみましょう。

  1. orders から直近10件の注文を表示する。
  2. orders から注文金額が高い順に上位5件を表示する。
  3. products から価格が安い順に20件を表示する。
  4. なぜ ORDER BY なしの LIMIT 10 が実務で危険なことがあるのか説明する。

まとめ

構文 意味
ORDER BY 結果を並び替える ORDER BY order_date
ASC 昇順 ORDER BY price ASC
DESC 降順 ORDER BY total_amount DESC
LIMIT 表示件数を制限する LIMIT 10
複数列指定 左から順に優先して並べる ORDER BY status, order_date DESC

この章のキーメッセージ: ORDER BYLIMIT は、データを安全に観察するための基本です。意味のある上位・下位を見るときは、並び替え条件を必ず明示しましょう。


この章の確認

  1. ASCDESC の違いを説明してください。
  2. orders テーブルから直近10件の注文を取り出すSQLを書いてください。
  3. 注文金額が大きい上位5件を見るには、ORDER BYLIMIT をどう組み合わせますか?
  4. ORDER BY なしで LIMIT 10 を使った場合、どのような点に注意が必要ですか?

関連演習