SQL课程(分析师专用):快速挑选、学习、应用
发布: (2026年4月28日 GMT+8 08:02)
5 分钟阅读
原文: Dev.to
Source: Dev.to
面向分析师的 SQL 与后端工程师的 SQL
- 分析师 SQL:读取杂乱数据,构建可信的指标,并传达可被他人复现和审计的结果。
- 后端 SQL:设计完美的模式,调优索引,编写存储过程等。这些对刚入行的分析师来说优先级较低。
入门时可以降级的内容
- 深入的规范化理论
- 存储过程和用户自定义函数(除非你的工作需要)
- 高级性能调优(以后再学)
如果一门课程在你写了 50 条真实查询之前就花好几周讲数据库内部原理,那它可能并不适合分析师。
与工作相关的学习路径(平台无关)
第 1 周 – 查询基础
SELECT、WHERE、ORDER BY、LIMIT- 用
CASE WHEN进行分箱 - 基本聚合函数:
COUNT、SUM、AVG、MIN/MAX
第 2 周 – 连接与数据形态
INNER、LEFT,以及何时使用FULL OUTER- 用
DISTINCT与ROW_NUMBER()去重 - 处理多对多连接而不导致指标膨胀
第 3 周 – 分析模式
- 窗口函数:
ROW_NUMBER、LAG/LEAD、累计总计 - 按注册周/月份划分的 Cohort 与留存
- 漏斗查询(步骤完成情况)
第 4 周 – 可靠性与交付
- 查询可读性:CTE、命名、统一格式
- 合理性检查与对账
- 将结果导出到 BI 工具 / notebook
主观观点: 窗口函数是“会查询”与“会分析”之间的分水岭。任何回避窗口函数的面向分析师的课程都会让你力量受限。
留存分析 – 可复用模式
-- PostgreSQL syntax
WITH cohorts AS (
SELECT
user_id,
DATE_TRUNC('month', created_at) AS cohort_month
FROM users
),
activity AS (
SELECT
e.user_id,
DATE_TRUNC('month', e.event_at) AS activity_month
FROM events e
GROUP BY 1, 2
),
cohort_activity AS (
SELECT
c.cohort_month,
a.activity_month,
COUNT(DISTINCT c.user_id) AS active_users
FROM cohorts c
JOIN activity a
ON a.user_id = c.user_id
AND a.activity_month >= c.cohort_month
GROUP BY 1, 2
),
cohort_size AS (
SELECT
cohort_month,
COUNT(*) AS cohort_users
FROM cohorts
GROUP BY 1
)
SELECT
ca.cohort_month,
ca.activity_month,
ca.active_users,
cs.cohort_users,
ROUND(1.0 * ca.active_users / cs.cohort_users, 4) AS retention_rate
FROM cohort_activity ca
JOIN cohort_size cs USING (cohort_month)
ORDER BY 1, 2;
为什么这很重要
- 可读性: 使用 CTE 将逻辑拆分为多个步骤。
- 准确性: 通过
COUNT(DISTINCT …)避免重复计数。 - 灵活性: 可以轻松改为按周划分 Cohort,或使用不同的“活跃”定义。
如果你的课程在几周内都达不到这种查询水平,那它就不是以分析师为中心的。
选课指南 – 检查清单
- 是否使用 真实数据集?
- 是否在早期就教授 窗口函数 和 CTE?
- 练习是否 评分且可迭代?
- 是否说明 方言差异(Postgres、BigQuery、MySQL 等)?
- 你能否 在可用时间内完成?
平台推荐
- DataCamp – 适合短小、交互式的练习,能快速培养肌肉记忆。
- Udemy – 如果需要更广的课程目录并想匹配特定工具(Postgres、BigQuery、SQL Server),可选,但要挑选高质量的讲师和评价。
- Coursera – 适合喜欢更长、更有证书导向课程并提供系统化学习路径的学习者。
结论: 选定一个平台,完成单一学习路径,并立刻把所学应用到你关心的数据集(工作数据、公开数据或副项目)。这种“应用”步骤会把课程转化为真正的分析师竞争力。