关于 SQL Analysis
面向业务分析师的 SQL 技能,可用于验证数据需求、了解当前数据状况并独立开展分析。内容涵盖查询基础、常见检查方法和只读探索实践。
主要功能
- 01SELECT 与筛选基础
- 02聚合与表连接
- 03数据质量检查
- 04流程与集成分析
- 05只读查询实践
适用场景
- 01验证迁移数据
- 02排查记录缺失或异常
- 03为利益相关者准备临时报告
- 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;
集成规范验证
“‘付款方式’有哪些不同的值,以便我们进行映射?”
SELECT DISTINCT payment_method
FROM transactions;
最佳实践
- 只读访问:确保你只有 SELECT 权限(ro-user)。
- 限制结果数量:探索新表时,始终使用
LIMIT 10(或TOP 10)。 - 避免影响生产环境性能:高峰时段避免运行开销较大的查询(例如联接 5 个超大型表)。
- 理解 NULL:
COUNT(column)会忽略 NULL;COUNT(*)会统计所有内容。
工具
- DBeaver:通用数据库工具。
- Metabase / Redash:可视化 SQL 构建器。
- Lark Base:可导入 CSV 结果以便分享。
评论
支持 Markdown