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本体の挙動とは独立した参考情報です。
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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