【SQL第10回】実践!集計クエリを書いてみよう

SQL基礎講座 全10回(第10回・最終回)

【SQL第10回】実践!集計クエリを書いてみよう

ついに最終回です!これまで学んできたすべての知識(SELECT, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, INNER JOIN)をフル稼働させ、実務の現場で売上分析やユーザー行動分析を行うための実践クエリを構築します。

📌 SQL講座ロードマップ一覧(クリックで移動)

1. 実践シナリオ:カテゴリ別売上ランキングの抽出

今回挑戦する実戦的なデータ抽出シナリオは、以下の通りです。

📊 分析クエリの要件定義

  • 注文明細テーブルと、商品テーブルを結合する。
  • 商品カテゴリ(例: 家電、食品、衣類)ごとにグループ化する。
  • カテゴリごとの「売上合計金額」と「販売した商品の総個数」を計算する。
  • 売上合計金額が「10万円以上」のカテゴリのみを対象とする。
  • 売上合計金額が高い順(降順)に並び替えて出力する。

2. 実践!売上分析の複合SQLクエリ

このクエリを実行すると、バラバラに登録されていた注文履歴からカテゴリ別の合計額が瞬時に算出され、意思決定に必要な経営指標を1つの表として取り出せます。

sales_report.sql
SELECT
    p.category AS カテゴリ名,
    SUM(o.quantity) AS 販売個数,
    SUM(o.quantity * p.price) AS 売上合計額
FROM
    order_items AS o
INNER JOIN
    products AS p
ON
    o.product_id = p.id
GROUP BY
    p.category
HAVING
    SUM(o.quantity * p.price) >= 100000
ORDER BY
    売上合計額 DESC;

📌 エイリアスを ORDER BY で再利用する

RDBMSのクエリ実行の順序において、`SELECT` は `WHERE` や `GROUP BY` よりも**後**に処理されますが、`ORDER BY` は `SELECT` よりもさらに**後**に処理されます。そのため、SELECT句の中で `SUM(o.quantity * p.price) AS 売上合計額` と定義した日本語のエイリアスは、最後の `ORDER BY` の指定にそのまま再利用することができます(※WHEREやGROUP BYでは再利用できません)。

3. SQL基本講座の完結にあたって

全10回に及んだSQL基本講座を無事に修了されたこと、本当におめでとうございます!🎉

データの取得・別名指定、WHEREによる絞り込み、並び替え、出力件数の制限、そしてデータベースの強力な集計処理(GROUP BY)、さらに複数のデータを関連付けて合体させる結合(INNER JOIN / LEFT JOIN)、更新・削除(UPDATE / DELETE)と、実務で毎日使う必須のクエリ文脈を網羅して習得されました。

データの利活用は、あらゆるITサービスの基盤です。SQLを操るスキルは、インフラ、バックエンド開発、マーケティング、データサイエンスなど、あらゆるキャリアにおいてあなたの能力を証明する一生物の財産になります。

磨いたSQLスキルを使って、より多くの役立つデータを分析・抽出し、素晴らしいサービスの創造に活かしてください!