con un clic
sql-analysis
SQL 数据分析时使用。适用于业务指标查询、漏斗分析、留存计算、窗口函数、CTE 递归。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
SQL 数据分析时使用。适用于业务指标查询、漏斗分析、留存计算、窗口函数、CTE 递归。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
设计 API 错误码和错误结构时使用。适用于错误响应规范、调用方错误处理、调试可观测。优先使用 RFC 7807 Problem Details + 业务错误码 + 调用方处理建议。
设计幂等接口和重试策略时使用。适用于支付、扣减、订单、关键写操作。优先使用 Idempotency-Key + 业务去重键 + 并发冲突处理(ETag/版本号)。
输出 OpenAPI 契约和 Mock 服务时使用。适用于 API 设计的最后一步、给前端/后端/QA 的交付。优先使用 OpenAPI 3.1 + Mock 数据覆盖所有路径 + 详细的下游交接清单。
设计列表接口的分页、筛选、排序、搜索时使用。适用于所有列表 API。优先使用 cursor 分页(大数据)或 offset 分页(小数据)+ 统一筛选/排序规范。
| name | sql-analysis |
| description | SQL 数据分析时使用。适用于业务指标查询、漏斗分析、留存计算、窗口函数、CTE 递归。 |
1. 先明确问题再写 SQL
2. 用 CTE 分步骤(可读)
3. 注意时区和日期边界
4. 排除测试数据 / 异常值
5. 大表注意性能(索引 / 分区)
6. 结果必须可解释
WITH funnel AS (
SELECT
COUNT(DISTINCT CASE WHEN event = 'view' THEN user_id END) AS step1_view,
COUNT(DISTINCT CASE WHEN event = 'add_cart' THEN user_id END) AS step2_cart,
COUNT(DISTINCT CASE WHEN event = 'checkout' THEN user_id END) AS step3_checkout,
COUNT(DISTINCT CASE WHEN event = 'payment' THEN user_id END) AS step4_payment
FROM events
WHERE created_at BETWEEN '2026-05-01' AND '2026-05-31'
)
SELECT
step1_view,
step2_cart,
ROUND(step2_cart * 100.0 / step1_view, 1) AS cart_rate,
step3_checkout,
ROUND(step3_checkout * 100.0 / step2_cart, 1) AS checkout_rate,
step4_payment,
ROUND(step4_payment * 100.0 / step3_checkout, 1) AS payment_rate
FROM funnel;
WITH first_day AS (
SELECT user_id, MIN(DATE(created_at)) AS first_date
FROM events
GROUP BY user_id
),
retention AS (
SELECT
f.first_date,
DATE(e.created_at) - f.first_date AS day_n,
COUNT(DISTINCT e.user_id) AS retained
FROM events e
JOIN first_day f ON e.user_id = f.user_id
GROUP BY f.first_date, day_n
)
SELECT
first_date,
MAX(CASE WHEN day_n = 0 THEN retained END) AS d0,
MAX(CASE WHEN day_n = 1 THEN retained END) AS d1,
MAX(CASE WHEN day_n = 7 THEN retained END) AS d7,
MAX(CASE WHEN day_n = 30 THEN retained END) AS d30
FROM retention
GROUP BY first_date
ORDER BY first_date;
-- 排名
SELECT user_id, amount,
RANK() OVER (ORDER BY amount DESC) AS rank
FROM orders;
-- 累计
SELECT date, revenue,
SUM(revenue) OVER (ORDER BY date) AS cumulative
FROM daily_revenue;
-- 移动平均(7日)
SELECT date, revenue,
AVG(revenue) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS ma7
FROM daily_revenue;
templates/sql-analysis-template.md — SQL 分析记录模板□ 问题明确
□ 数据源正确
□ 时区处理
□ 排除异常
□ 性能可接受
□ 结果可解释
□ CTE 可读
上游:metric-design → 指标定义
下游:data-visualization → 图表展示
下游:analysis-report → 纳入报告