mcpField
S
SQL Analysis

SQL Analysis

github.com/danhvbデータ・データベース105 回インストール
リポジトリ

SQL Analysis について

業務アナリスト向けの SQL スキルです。データ要件の検証、現状データの把握、独立した分析を支援します。クエリの基礎、一般的な確認方法、読み取り専用での調査手法を扱います。

主な機能

  1. 01SELECT と絞り込みの基礎
  2. 02集計とテーブル結合
  3. 03データ品質チェック
  4. 04プロセスと連携の分析
  5. 05読み取り専用クエリの実践

活用シーン

  1. 01移行データの検証
  2. 02欠落または想定外のレコードの調査
  3. 03関係者向けのアドホックレポート作成
  4. 04連携項目の値マッピング確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/danhvb/my-ba-skills --skill sql-analysis

インストール後、Claude Code で/sql-analysisを入力して読み込まれたか確認します。

詳細

SQL 分析スキル

目的

BA がデータ要件を検証し、現在のデータ状態を把握して、開発者だけに頼ることなく自らデータ分析を行えるようにします。

使用する場面

  • 移行データを検証するとき。
  • 現在のデータ構造(As-Is)を把握するとき。
  • ユーザーの問題をトラブルシューティングするとき(「この注文が表示されないのはなぜですか?」)。
  • ステークホルダー向けにアドホックレポートを作成するとき。

BA 向け SQL の基本概念

1. SELECT 文
SELECT column1, column2   -- What do you want?
FROM table_name           -- From where?
WHERE condition           -- Filter logic
ORDER BY column1 DESC;    -- Sorting
2. フィルタリング(WHERE)
  • WHERE status = 'Active'(完全一致)
  • WHERE quantity > 10(比較)
  • WHERE name LIKE 'Smith%'(部分一致)
  • WHERE status IN ('New', 'Open')(リスト)
  • WHERE end_date IS NULL(欠損データの検出)
3. 集計(GROUP BY)

データを要約します。

SELECT status, COUNT(*) as total_orders
FROM orders
GROUP BY status;
4. テーブルの結合(JOIN)

関連するデータを結び付けます。

  • INNER JOIN:一致するレコードのみ(A ∩ B)。「注文のある顧客を表示してください。」
  • LEFT JOIN:左側のすべてと、右側の一致するレコード(A + A∩B)。「すべての顧客と、注文があればその注文を表示してください。」(注文のない顧客を見つけるのに適しています)。

よく使う分析クエリ

データ品質チェック

「メールアドレスが重複している顧客はいますか?」

SELECT email, COUNT(*)
FROM customers
GROUP BY email
HAVING COUNT(*) > 1;

「有効なユーザーに紐付いていない注文はありますか?」

SELECT o.order_id
FROM orders o
LEFT JOIN users u ON o.user_id = u.id
WHERE u.id IS NULL;
プロセス分析

「注文の発送にはどのくらい時間がかかりますか?」

SELECT 
    AVG(DATEDIFF(day, order_date, shipped_date)) as avg_days_to_ship,
    MAX(DATEDIFF(day, order_date, shipped_date)) as max_days
FROM orders
WHERE shipped_date IS NOT NULL;
インテグレーション仕様の検証

「マッピングに使用できるように、『Payment Method』の値を重複なく取得してください。」

SELECT DISTINCT payment_method
FROM transactions;

ベストプラクティス

  • 読み取り専用アクセス:SELECT 権限(ro-user)のみを付与してください。
  • 結果を制限する:新しいテーブルを調べるときは、必ず LIMIT 10(または TOP 10)を使用してください。
  • 本番環境のパフォーマンスへの影響を避ける:ピーク時に負荷の高いクエリ(例:巨大なテーブルを5つ結合するクエリ)を実行しないでください。
  • NULL を理解する:COUNT(column) は NULL を無視し、COUNT(*) はすべてをカウントします。

ツール

  • DBeaver:汎用 DB ツール。
  • Metabase / Redash:ビジュアル SQL ビルダー。
  • Lark Base:CSV の結果をインポートして共有できます。

コメント