jpskill.com
💬 コミュニケーション コミュニティ

sql-patterns

SQLの一般的なパターン、CTE、ウィンドウ関数、インデックス戦略などを素早く参照できるSkill。

📜 元の英語説明(参考)

Quick reference for common SQL patterns, CTEs, window functions, and indexing strategies. Triggers on: sql patterns, cte example, window functions, sql join, index strategy, pagination sql.

🇯🇵 日本人クリエイター向け解説

一言でいうと

SQLの一般的なパターン、CTE、ウィンドウ関数、インデックス戦略などを素早く参照できるSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o sql-patterns.zip https://jpskill.com/download/5940.zip && unzip -o sql-patterns.zip && rm sql-patterns.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/5940.zip -OutFile "$d\sql-patterns.zip"; Expand-Archive "$d\sql-patterns.zip" -DestinationPath $d -Force; ri "$d\sql-patterns.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して sql-patterns.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → sql-patterns フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

SQLパターン

一般的なSQLパターンのクイックリファレンスです。

CTE (共通テーブル式)

WITH active_users AS (
    SELECT id, name, email
    FROM users
    WHERE status = 'active'
)
SELECT * FROM active_users WHERE created_at > '2024-01-01';

連結されたCTE

WITH
    active_users AS (
        SELECT id, name FROM users WHERE status = 'active'
    ),
    user_orders AS (
        SELECT user_id, COUNT(*) as order_count
        FROM orders GROUP BY user_id
    )
SELECT u.name, COALESCE(o.order_count, 0) as orders
FROM active_users u
LEFT JOIN user_orders o ON u.id = o.user_id;

ウィンドウ関数 (クイックリファレンス)

関数 用途
ROW_NUMBER() 一意の連番
RANK() ギャップありの順位 (1, 2, 2, 4)
DENSE_RANK() ギャップなしの順位 (1, 2, 2, 3)
LAG(col, n) 前の行の値
LEAD(col, n) 次の行の値
SUM() OVER 累積合計
AVG() OVER 移動平均
SELECT
    date,
    revenue,
    LAG(revenue, 1) OVER (ORDER BY date) as prev_day,
    SUM(revenue) OVER (ORDER BY date) as running_total
FROM daily_sales;

JOINリファレンス

タイプ 返されるもの
INNER JOIN 一致する行のみ
LEFT JOIN 左側のすべて + 一致する右側
RIGHT JOIN 右側のすべて + 一致する左側
FULL JOIN すべての行、一致しない場合はNULL

ページネーション

-- OFFSET/LIMIT (単純、大きなOFFSETでは遅い)
SELECT * FROM products ORDER BY id LIMIT 20 OFFSET 40;

-- Keyset (高速、スケーラブル)
SELECT * FROM products WHERE id > 42 ORDER BY id LIMIT 20;

インデックス クイックリファレンス

インデックスタイプ 最適な用途
B-tree 範囲クエリ、ORDER BY
Hash 完全一致のみ
GIN 配列、JSONB、全文検索
Covering テーブルルックアップの回避

アンチパターン

間違い 修正
SELECT * 列を明示的にリストする
WHERE YEAR(date) = 2024 WHERE date >= '2024-01-01'
NOT IN とNULL NOT EXISTS を使用する
N+1クエリ JOINまたはバッチを使用する

その他のリソース

詳細なパターンについては、以下を参照してください。

  • ./references/window-functions.md - 完全なウィンドウ関数パターン
  • ./references/indexing-strategies.md - インデックスタイプ、カバリングインデックス、最適化
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

SQL Patterns

Quick reference for common SQL patterns.

CTE (Common Table Expressions)

WITH active_users AS (
    SELECT id, name, email
    FROM users
    WHERE status = 'active'
)
SELECT * FROM active_users WHERE created_at > '2024-01-01';

Chained CTEs

WITH
    active_users AS (
        SELECT id, name FROM users WHERE status = 'active'
    ),
    user_orders AS (
        SELECT user_id, COUNT(*) as order_count
        FROM orders GROUP BY user_id
    )
SELECT u.name, COALESCE(o.order_count, 0) as orders
FROM active_users u
LEFT JOIN user_orders o ON u.id = o.user_id;

Window Functions (Quick Reference)

Function Use
ROW_NUMBER() Unique sequential numbering
RANK() Rank with gaps (1, 2, 2, 4)
DENSE_RANK() Rank without gaps (1, 2, 2, 3)
LAG(col, n) Previous row value
LEAD(col, n) Next row value
SUM() OVER Running total
AVG() OVER Moving average
SELECT
    date,
    revenue,
    LAG(revenue, 1) OVER (ORDER BY date) as prev_day,
    SUM(revenue) OVER (ORDER BY date) as running_total
FROM daily_sales;

JOIN Reference

Type Returns
INNER JOIN Only matching rows
LEFT JOIN All left + matching right
RIGHT JOIN All right + matching left
FULL JOIN All rows, NULL where no match

Pagination

-- OFFSET/LIMIT (simple, slow for large offsets)
SELECT * FROM products ORDER BY id LIMIT 20 OFFSET 40;

-- Keyset (fast, scalable)
SELECT * FROM products WHERE id > 42 ORDER BY id LIMIT 20;

Index Quick Reference

Index Type Best For
B-tree Range queries, ORDER BY
Hash Exact equality only
GIN Arrays, JSONB, full-text
Covering Avoid table lookup

Anti-Patterns

Mistake Fix
SELECT * List columns explicitly
WHERE YEAR(date) = 2024 WHERE date >= '2024-01-01'
NOT IN with NULLs Use NOT EXISTS
N+1 queries Use JOIN or batch

Additional Resources

For detailed patterns, load:

  • ./references/window-functions.md - Complete window function patterns
  • ./references/indexing-strategies.md - Index types, covering indexes, optimization