📊 STEP 15: 集計関数(SUM、AVG、COUNT、統計関数)
データを集計して意味を見出す!集計関数を完全マスター
📋 このステップで学ぶこと
- 集計関数とは何か、なぜ必要なのか
- 基本集計関数(SUM、AVG、COUNT、COUNTD)
- 最小値・最大値(MIN、MAX)
- 統計関数(MEDIAN、STDEV、PERCENTILE)
- 集計のレベル(行レベル vs 集計レベル)
- 集計関数の使い分けとベストプラクティス
ゴール:目的に応じて適切な集計関数を選択し、データを要約できるようになる
📊 1. 集計関数とは
集計関数の定義と役割
集計関数(Aggregate Function)は、複数のデータ行をまとめて1つの値にする関数です。Excelのピボットテーブルと同じように、データを要約・集約します。
ビジネスデータは通常、1行=1取引として詳細に記録されていますが、分析では「合計」「平均」「件数」などの集計した情報が必要です。
クラス30人のテストの点数から平均点を計算する場合を考えてみましょう。
生徒B: 75点
生徒C: 90点
…
生徒Z: 85点
────────────────
平均点: 82点 ← 集計関数 AVG() で計算
ポイント:30行のデータを1つの数値(平均点)にまとめています。これが集計です!
| レベル | 説明 | 例 |
|---|---|---|
| 行レベル | 1行ごとの値(元データ) | [売上](1取引の売上:10,000円) |
| 集計レベル | 複数行をまとめた値 | SUM([売上])(合計売上:1,000,000円) |
Tableauの動作:メジャーをビューにドラッグすると、自動的に集計されます(デフォルトはSUM)。
ビジネスデータは詳細レベル(1行=1取引)で記録されていますが、分析では集計レベルの情報が必要です。
| 質問 | 必要な集計 |
|---|---|
| 渋谷店の1月の売上は? | SUM関数で合計 |
| 全店舗の平均客単価は? | AVG関数で平均 |
| 今月の取引件数は? | COUNT関数でカウント |
| 何人の顧客が来店した? | COUNTD関数でユニーク数 |
➕ 2. 基本集計関数(SUM、AVG、COUNT)
3大集計関数を使いこなす
SUM、AVG、COUNTは最も頻繁に使う基本の集計関数です。これらを使いこなせば、ほとんどの分析ニーズに対応できます。
| 項目 | 内容 |
|---|---|
| 構文 | SUM([フィールド名]) |
| 機能 | すべての値を足し算して合計を返す |
| 例 | SUM([売上]) → 売上の合計 |
| 特徴 | メジャーのデフォルト集計方法。NULLは0として扱う |
| 使用場面 | 総売上、総個数、総利益など「全体の量」を知りたいとき |
| 項目 | 内容 |
|---|---|
| 構文 | AVG([フィールド名]) |
| 機能 | すべての値の平均を返す(合計÷件数) |
| 例 | AVG([売上]) → 1取引あたりの平均売上 |
| 特徴 | NULLは除外して平均を計算 |
| 使用場面 | 平均単価、平均点数など「1件あたりの値」を知りたいとき |
| 関数 | 機能 | 例 |
|---|---|---|
| COUNT | NULLを除いた行数を返す | COUNT([売上]) → 売上データがある取引件数 |
| COUNTD | ユニーク(重複除外)な値の数を返す | COUNTD([顧客ID]) → ユニークな顧客数 |
以下のデータで違いを確認しましょう:
COUNT([顧客ID]) = 5 (全行数:重複含む)
COUNTD([顧客ID]) = 3 (ユニーク数:C001、C002、C003)
| 関数 | いつ使う? | 例 |
|---|---|---|
| COUNT | 「何件あるか」を知りたいとき | 取引件数、注文数 |
| COUNTD | 「何種類あるか」を知りたいとき | 顧客数、商品数、店舗数 |
AVG([売上])は「行レベルの平均」(1取引あたりの平均)を計算します。
例:渋谷店の3取引(120,000円、15,000円、1,800円)の場合
AVG([売上]) = (120,000 + 15,000 + 1,800) ÷ 3 = 45,600円
店舗別の平均売上を求めたい場合:
SUM([売上]) / COUNTD([店舗名]) を使って集計レベルで計算します。
📉 3. 最小値・最大値(MIN、MAX)
データの範囲を把握する
MIN、MAXはデータの最小値・最大値を返します。価格の範囲、期間の特定、異常値の発見に役立ちます。
| 関数 | 構文 | 機能 | 例 |
|---|---|---|---|
| MIN | MIN([フィールド名]) | 最小値を返す | MIN([売上]) → 最低売上 |
| MAX | MAX([フィールド名]) | 最大値を返す | MAX([売上]) → 最高売上 |
| 活用場面 | 計算式 | 結果例 |
|---|---|---|
| 価格の範囲 | MIN([売上]) 〜 MAX([売上]) | 1,800円 〜 120,000円 |
| データ開始日 | MIN([日付]) | 2024/01/05 |
| データ終了日 | MAX([日付]) | 2024/02/28 |
| データ期間(日数) | DATEDIFF(‘day’, MIN([日付]), MAX([日付])) | 54日間 |
📈 4. 統計関数(MEDIAN、STDEV、PERCENTILE)
より高度な統計分析を行う
平均だけでなく、中央値、標準偏差、パーセンタイルなどの統計指標を使うと、データの特性をより深く理解できます。
| 項目 | 内容 |
|---|---|
| 構文 | MEDIAN([フィールド名]) |
| 機能 | データを小さい順に並べたときの真ん中の値を返す |
| 特徴 | 外れ値(極端に大きい/小さい値)の影響を受けにくい |
平均値 = (1+3+5+7+100) ÷ 5 = 23.2万円 ← 外れ値に引っ張られる
中央値 = 5万円 ← 真ん中の値で安定
| 場面 | 推奨 | 理由 |
|---|---|---|
| 給与データ | 中央値 | 一部の高給取りに引っ張られない |
| 不動産価格 | 中央値 | 豪邸の影響を受けない |
| テストの点数 | 平均値 | ほぼ正規分布で外れ値が少ない |
| 売上(一般) | 平均値 | 合計を件数で割った値が意味を持つ |
| 項目 | 内容 |
|---|---|
| 構文 | STDEV([フィールド名])(標本標準偏差) |
| 機能 | データのばらつき(散らばり具合)を数値化 |
| 解釈 | 小さい→データが平均付近に集中(安定)、大きい→ばらつきが大きい(変動) |
データB: 5, 10, 15, 20, 25 → STDEV = 7.91(ばらつき大)
| 項目 | 内容 |
|---|---|
| 構文 | PERCENTILE([フィールド名], パーセンタイル値) |
| 機能 | データを小さい順に並べたとき、指定した割合の位置にある値を返す |
| パーセンタイル | 計算式 | 意味 |
|---|---|---|
| 25%(Q1) | PERCENTILE([売上], 0.25) | 第1四分位数(下から25%の位置) |
| 50%(Q2) | PERCENTILE([売上], 0.50) | 中央値(= MEDIAN) |
| 75%(Q3) | PERCENTILE([売上], 0.75) | 第3四分位数(下から75%の位置) |
| 90% | PERCENTILE([売上], 0.90) | 上位10%のボーダーライン |
🔢 5. よく使う計算パターン
実務で役立つ計算フィールド
集計関数を組み合わせることで、さまざまなビジネス指標を計算できます。
| 指標 | 計算式 | 説明 |
|---|---|---|
| 客単価 | SUM([売上]) / COUNTD([顧客ID]) | 1人あたりの平均購入額 |
| 平均取引金額 | AVG([売上]) | 1取引あたりの平均額 |
| 購入頻度 | COUNT([取引ID]) / COUNTD([顧客ID]) | 1人あたりの平均取引回数 |
| 店舗あたり売上 | SUM([売上]) / COUNTD([店舗名]) | 1店舗あたりの平均売上 |
| 商品あたり個数 | SUM([個数]) / COUNTD([商品名]) | 1商品あたりの平均販売個数 |
| 変動係数 | STDEV([売上]) / AVG([売上]) | 平均に対する標準偏差の割合(安定性の指標) |
⚙️ 6. 集計関数の使い分けと注意点
目的に応じた関数の選択
集計関数を正しく使い分けることが、正確な分析の鍵です。
| 目的 | 使う関数 | 例 |
|---|---|---|
| 合計を知りたい | SUM | 総売上、総個数、総利益 |
| 平均を知りたい | AVG | 平均売上、平均点数 |
| 件数を知りたい | COUNT | 取引件数、注文数 |
| 種類数を知りたい | COUNTD | 顧客数、商品数、店舗数 |
| 最大/最小を知りたい | MAX/MIN | 最高売上、最低価格 |
| 外れ値を避けたい | MEDIAN | 給与の中央値、不動産価格 |
| ばらつきを知りたい | STDEV | 売上の変動、成績のばらつき |
| 上位X%を知りたい | PERCENTILE | 上位10%の売上ライン |
| 間違い | 問題点 | 正しい方法 |
|---|---|---|
| 店舗別平均にAVG使用 | 行レベルの平均になる | SUM([売上]) / COUNTD([店舗名]) |
| 顧客数にCOUNT使用 | 重複カウントされる | COUNTD([顧客ID]) |
| 外れ値ありでAVG使用 | 極端な値に引っ張られる | MEDIAN([売上]) |
| 関数 | NULL値の扱い |
|---|---|
| SUM | NULLを0として扱う |
| AVG | NULLを除外して平均を計算 |
| COUNT | NULLを除外してカウント |
| MIN/MAX | NULLを無視 |
📝 STEP 15 のまとめ
- 集計関数:複数行を1つの値にまとめる
- SUM:合計(最も基本的)
- AVG:平均(行レベルの平均に注意)
- COUNT:件数、COUNTD:ユニーク数
- MIN/MAX:最小値/最大値
- MEDIAN:中央値(外れ値に強い)
- STDEV:標準偏差(ばらつき)
- PERCENTILE:百分位数(上位X%)
- 集計のレベル:ビューの粒度で変化
集計関数はデータ分析の心臓部です。詳細データを要約して意味を見出します。
特にSUM(合計)、AVG(平均)、COUNTD(ユニーク数)の3つを使いこなせば、ほとんどの分析ニーズに対応できます。
判断基準:
・外れ値がある場合 → MEDIAN(中央値)
・ばらつきを知りたい → STDEV(標準偏差)
・上位X%を知りたい → PERCENTILE
📝 実践演習
店舗別の売上合計(SUM)、売上平均(AVG)、取引件数(COUNT)を表示するビューを作成してください。
| 1 | 「店舗名」を行シェルフにドラッグ |
| 2 | 「売上」を列シェルフにドラッグ(自動的にSUM) |
| 3 | 「売上」をもう一度列シェルフにドラッグ |
| 4 | 2つ目の「売上」をクリック→「メジャー」→「平均」 |
| 5 | 「売上」をもう一度列シェルフにドラッグ |
| 6 | 3つ目の「売上」をクリック→「メジャー」→「カウント」 |
結果:店舗ごとに、売上合計・平均・件数が3列で表示される
「客単価」という計算フィールドを作成してください。計算式は「売上合計 ÷ ユニーク顧客数」とし、店舗別の客単価を表示してください。
| 1 | データペイン右上の▼→「計算フィールドの作成」 |
| 2 | 名前:客単価 |
| 3 | 計算式:SUM([売上]) / COUNTD([顧客ID]) |
| 4 | 「OK」をクリック |
| 5 | 「店舗名」を行シェルフ、「客単価」を列シェルフにドラッグ |
| 6 | 書式設定:通貨、小数点以下0桁 |
結果:店舗別の客単価(1人あたりの平均購入額)が表示される
売上の「平均値」「中央値」「標準偏差」「第1四分位数(Q1)」「第3四分位数(Q3)」を計算し、それぞれを計算フィールドとして作成してください。これらの統計値をテキストテーブル(表)で表示してください。
| 名前 | 計算式 |
|---|---|
| 売上平均値 | AVG([売上]) |
| 売上中央値 | MEDIAN([売上]) |
| 売上標準偏差 | STDEV([売上]) |
| 売上Q1 | PERCENTILE([売上], 0.25) |
| 売上Q3 | PERCENTILE([売上], 0.75) |
| 1 | すべての計算フィールドを「メジャーバリュー」にドラッグ |
| 2 | マークカードで「テキスト」を選択 |
| 3 | 書式設定で通貨形式に変更 |
結果:売上の統計サマリーが表形式で表示される
❓ よくある質問
例:渋谷店の3取引(10万円、5万円、3万円)の場合
・SUM = 18万円(すべて足し算)
・AVG = 6万円(18万円 ÷ 3件)
売上分析では通常SUMを使い、客単価などはAVGまたはSUM/COUNTで計算します。
・COUNT:全行数(重複含む)→「何件あるか」
・COUNTD:ユニーク数(重複除外)→「何種類あるか」
判断基準:顧客数を数えるならCOUNTD([顧客ID])、取引件数を数えるならCOUNT([取引ID])。
・SUM:NULLを0として扱う
・AVG:NULLを除外して平均
・COUNT:NULLを除外してカウント
・MIN/MAX:NULLを無視
ほとんどの集計関数はNULLを「存在しないもの」として扱います。
・外れ値あり(給与、不動産価格など)→ 中央値(MEDIAN)
・外れ値なし(テストの点数など)→ 平均値(AVG)
中央値は「真ん中の値」なので、極端な値の影響を受けません。
AVG([売上])は「行レベル」の平均(1取引あたりの平均)を計算します。
店舗別の平均売上を求めるには、まず店舗ごとの合計を出し、それを店舗数で割る必要があります。これを「集計レベルの平均」と言います。
・標準偏差が小さい→ データが平均の近くに集まっている(安定)
・標準偏差が大きい→ データがばらついている(変動が大きい)
例:売上のSTDEVが10万円なら、ほとんどのデータは平均±10万円の範囲にあると解釈できます。
活用例:
・上位10%の顧客を特定(VIP顧客)
・下位25%の商品を特定(低パフォーマンス商品)
・箱ひげ図の作成(Q1、Q2、Q3を使用)
PERCENTILE([売上], 0.90) で上位10%のボーダーラインがわかります。
学習メモ
BIツール入門 - Step 15