# SQLで「新しい数値」を作るときの考え方
SQLは書けるけれど、
- 「どのような数値を作ればいいのか分からない」
- 「どんな計算式にすればいいのか分からない」
- 「データをどう見ればいいのか分からない」
という悩みを持つ人は非常に多いです。
ですが結論から言うと、新しい数値は難しくありません。
---
# 結論
👉 **既存データを「どう変換・組み合わせるか」を定義するだけ**
---
# 基本フレーム(最重要)
新しい数値は必ずこの形になります。
```text
新しい数値 = 集約(加工(元データ))
① まず分類する(ここが最重要)
新しい数値はこの4パターンしかありません。
① 集約(Aggregation)
例
- 売上合計
- 平均単価
- 最大値
- 最小値
使用関数
SUM()
AVG()
MAX()
MIN()
② 比率(Ratio)
例
- 利益率 = 利益 ÷ 売上
- 達成率 = 実績 ÷ 目標
イメージ
割合を出す
③ 差分(Difference)
例
- 原価差異 = 実績 − 目標
- 前月比 = 今月 − 先月
イメージ
差を比較する
④ 分解・再構成(Conditional / 分類)
例
- 実績だけ合計
- 特定カテゴリだけ抽出
使用技術
CASE WHEN
② 次にやること(設計)
SQLを書く前に、必ずこの順番で考えます。
STEP1:目的を決める
例
部品ごとの原価差異を出したい
STEP2:粒度を決める
例
年月 × 部品番号
STEP3:元データを確認する
例
年月
部品番号
カテゴリ
金額
STEP4:日本語で計算式を書く
例
原価差異 = 実績の合計 − 目標の合計
STEP5:SQLに変換する
SELECT
年月,
部品番号,
SUM(CASE WHEN カテゴリ = '実績' THEN 金額 ELSE 0 END)
-
SUM(CASE WHEN カテゴリ = '目標' THEN 金額 ELSE 0 END)
AS 原価差異
FROM cost_table
GROUP BY
年月,
部品番号
③ もう一段レベルを上げる考え方
「分解 → 再構成」
複雑な指標は、全部これです。
例:利益率
まず利益率を考えます。
利益率 = 利益 ÷ 売上
ですが、利益というカラムがない場合があります。
その場合は分解します。
利益 = 売上 − 原価
つまり:
利益率 = (売上 − 原価) ÷ 売上
つまり重要なのはこれ
👉 1回分解してから再構成する
④ よくある失敗(重要)
❌ いきなりSQLを書く
結果
100%詰まる
❌ 1行で全部やろうとする
結果
デバッグ不能
❌ 粒度を考えていない
結果
値がズレる
⑤ 実務で使うテンプレ
新しい数値を作るときは、まずこれを書いてください。
【目的】
何を知りたいか
【粒度】
どの単位で出すか
【元データ】
使うカラム
【分解】
どう分けるか(実績/目標など)
【計算式】
日本語で
⑥ 今の自分に必要なこと
今の状態:
SQLは書ける
↓
でも「式を設計できない」
必要なのはこれです。
計算を“分解して考える力”
⑦ トレーニング(かなり効果あり)
毎日これをやるだけでもかなり変わります。
問題
「売上の前年比を出せ」
まず設計を書く
【目的】
前年比
【粒度】
年月 × 商品
【元データ】
年月
商品
売上
【分解】
今年の売上
去年の売上
【計算式】
前年比 = 今年 ÷ 去年
そのあとSQLを書く
SELECT
年月,
商品,
SUM(今年売上) / SUM(去年売上) AS 前年比
FROM sales
GROUP BY
年月,
商品
まとめ(核心)
新しい数値は難しくありません。
重要なのは:
既存データを分解して、再構成すること
です。
最後に
SQLが書けるだけでは、実務では足りません。
本当に重要なのは:
- 何を知りたいのか
- どの粒度で見るのか
- どのデータを使うのか
- どう分解するのか
を整理して考えることです。
SQLは、その設計を実装するための「道具」に過ぎません。