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 BY と LIMIT をセットで使いましょう。
8. 並び替えは分析の発見を助ける
データを並べると、単に見やすくなるだけではありません。 異常値や重要なデータに気づきやすくなります。
- 金額が大きい順に見ると、高額注文や入力ミスが見つかる
- 日付が新しい順に見ると、直近のデータ反映状況がわかる
- 価格が安い順に見ると、0円や負の価格などの異常に気づける
- 顧客ID順に見ると、同じ顧客の注文が近くに並びやすい
集計や可視化の前に、ORDER BY と LIMIT で実データを観察する習慣をつけましょう。
実務での使いどころ: まず異常値と直近データを見る
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を書いてみましょう。
ordersから直近10件の注文を表示する。ordersから注文金額が高い順に上位5件を表示する。productsから価格が安い順に20件を表示する。- なぜ
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 BY と LIMIT は、データを安全に観察するための基本です。意味のある上位・下位を見るときは、並び替え条件を必ず明示しましょう。
この章の確認
ASCとDESCの違いを説明してください。ordersテーブルから直近10件の注文を取り出すSQLを書いてください。- 注文金額が大きい上位5件を見るには、
ORDER BYとLIMITをどう組み合わせますか? ORDER BYなしでLIMIT 10を使った場合、どのような点に注意が必要ですか?