Digital Marketing Academy · レッスン

SELECT、WHERE、GROUP BY

キャンペーンデータを集計します。

レッスン 2/413 ステップ

「SELECT、WHERE、GROUP BY」はCoddyKit上の無料Digital Marketing Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDigital Marketing Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Digital Marketing Academyコースには全4レッスンが含まれています。

3つの動詞

マーケティング指標のほとんどは、3つの句から作られます。SELECTは列を選び、WHEREは行を絞り込み、GROUP BYは行をセグメントにまとめます。

この3つを使いこなせば、日々の分析に関する問いの大半を自分で解決できます。

SELECT channel, SUM(revenue) AS revenue
FROM orders
GROUP BY channel;

SELECT:列を選ぶ

SELECTには、取得したい項目を指定します。ASで列名を変更して出力を読みやすくしたり、その場で新しい値を計算したりできます。

結果セットは必要最小限にしましょう。特に大きなテーブルでは、本当に必要な列だけを取得してください。

SELECT campaign_id AS campaign,
       spend,
       spend * 1.2 AS spend_with_fees
FROM campaigns;

WHERE:行を絞り込む

WHEREは、条件に一致する行だけを残します。ANDやORで条件を組み合わせ、特定のセグメントに絞り込めます。

日付フィルターはマーケターにとって基本中の基本で、レポートの期間を正確に定義します。

SELECT *
FROM sessions
WHERE channel = 'email'
  AND session_date >= DATE '2026-01-01'
  AND device = 'mobile';

INとBETWEENでフィルタリングする

INはリスト内のいずれかの値に一致させるため、一度に複数のキャンペーンを扱うのに適しています。BETWEENは範囲を指定でき、日付の期間に最適です。

これらを使えば、ORを長く連ねる代わりに、複雑なフィルターを短く読みやすく書けます。

SELECT order_id, revenue
FROM orders
WHERE channel IN ('paid_search', 'paid_social')
  AND order_date BETWEEN DATE '2026-03-01' AND DATE '2026-03-31';

GROUP BY:セグメント化する

GROUP BYは、同じ値を持つ行をまとめ、グループごとに1行にします。SUM、COUNT、AVGなどの集計関数と組み合わせれば、セグメントごとの指標を取得できます。

これにより、生のイベントデータをチャネル別のパフォーマンステーブルに変換できます。

SELECT channel,
       COUNT(*) AS sessions,
       SUM(revenue) AS revenue
FROM sessions
GROUP BY channel;

集計関数

SUMは収益を合計し、COUNTはイベント数を数え、AVGは平均値を求め、COUNT(DISTINCT ...)はユニークユーザー数を数えます。

マーケティングでは重複を除いたカウントが重要です。セッション総数とユニーク訪問者数は、まったく異なる数字だからです。

SELECT campaign_id,
       COUNT(*) AS clicks,
       COUNT(DISTINCT user_id) AS reach,
       AVG(revenue) AS avg_order
FROM orders
GROUP BY campaign_id;

複数列でグループ化する

複数の列でグループ化すると、チャネル別・デバイス別のようなマトリクスを作成できます。値の組み合わせがそれぞれ1行になります。

スプレッドシートにエクスポートすることなく、より深いセグメント分析ができるようになります。

SELECT channel, device,
       COUNT(*) AS sessions
FROM sessions
GROUP BY channel, device
ORDER BY channel, sessions DESC;

HAVING:グループの絞り込み

WHEREはグループ化の前に行を絞り込み、HAVINGは集計後にグループを絞り込みます。しきい値を超えるセグメントだけを残すにはHAVINGを使います。

たとえば、100件を超える注文を生み出したキャンペーンだけを表示します。

SELECT campaign_id, COUNT(*) AS orders
FROM orders
GROUP BY campaign_id
HAVING COUNT(*) > 100
ORDER BY orders DESC;

並べ替えと件数制限

ORDER BYは結果を並べ替え、重要な行を先頭に表示します。LIMITは表示件数に上限を設けるため、トップNレポートに適しています。

この2つを組み合わせれば、「売上高が多い順にトップ5のキャンペーンは何か」という問いにもすぐ答えられます。

SELECT campaign_id, SUM(revenue) AS revenue
FROM orders
GROUP BY campaign_id
ORDER BY revenue DESC
LIMIT 5;

条件付き集計

FILTER(または集計関数内のCASE)を使うと、新規ユーザーとリピーターの売上高のような複数の条件付き指標を、1つのクエリで同時に計算できます。

複数のクエリを実行せずに済み、セグメント間の条件も完全に揃えられます。

SELECT channel,
       SUM(revenue) FILTER (WHERE is_new_customer) AS new_rev,
       SUM(revenue) FILTER (WHERE NOT is_new_customer) AS repeat_rev
FROM orders
GROUP BY channel;

すべてを組み合わせる

完全なクエリでは、WHEREで行を絞り込み、グループ化し、HAVINGでグループを絞り込んだ後、並べ替えて件数を制限します。

上から下へ読むと、チャネルについての分析結果を一つのストーリーとして読み取れます。

SELECT channel, SUM(revenue) AS revenue
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY channel
HAVING SUM(revenue) > 1000
ORDER BY revenue DESC;

クイックチェック

50件を超える注文があるキャンペーングループだけを取得したい場合、集計済みのグループを絞り込むのはどの句ですか?

まとめ

SELECTは列を選び、WHEREは行を絞り込み、GROUP BYはセグメント化し、HAVINGはグループを絞り込み、ORDER BYとLIMITは出力の形を整えます。

条件付き集計を使えば、複数の指標を1回の処理で計算できます。次は、JOINで複数のテーブルのデータを組み合わせます。

無料で開始

AI チューターと学ぶ Digital Marketing Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
63
レッスン
239

よくある質問

「SELECT、WHERE、GROUP BY」レッスンは無料ですか?

はい。「SELECT、WHERE、GROUP BY」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Digital Marketing Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Digital Marketing Academyコースには全4レッスンが含まれています。

「SELECT、WHERE、GROUP BY」で何を学びますか?

キャンペーンデータを集計します。 ブラウザで直接実行するハンズオンコードでDigital Marketing Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Digital Marketing Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDigital Marketing Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「SELECT、WHERE、GROUP BY」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDigital Marketing Academyレッスンでコードを書いて実行できますか?

はい。すべてのDigital Marketing Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. マーケターがSQLを学ぶ理由
  2. SELECT、WHERE、GROUP BY
  3. マーケティングテーブルを結合する
  4. コホートとファネルのクエリ
← Digital Marketing Academyに戻る