SQL
Structured Query Language · 与数据库对话的语言 · 免费 · 人人可学
它是什么:为什么是「硬通货」
- 定义:SQL 是操作关系型数据库的标准语言——查数据(SELECT)、改数据(INSERT/UPDATE/DELETE)。
- PM 用它的场景:「昨天注册转化率多少」「7 日留存怎么样」「哪个渠道来的用户最活跃」——这些都能用 SQL 自己查。
- 为什么值钱:会写查询,你就不必排队等数据同学支援——独立、快速、主动权在自己手里。
- 入门难度:语法接近英语,三件套就能覆盖 80% 的取数需求——它比你想的简单。
三件套语法:覆盖 80% 取数
- ① SELECT ... FROM ...:从哪张表、取哪些列——一切查询的骨架。
- ② WHERE + GROUP BY:按条件过滤、按维度分组——「最近 7 天按渠道分组」就是它。
- ③ JOIN:把多张表拼起来——用户表和订单表 JOIN,才能回答「哪些用户买了」。
-- 三件套的完整用法:查「最近 7 天各渠道的下单用户数」
SELECT u.channel, COUNT(DISTINCT o.user_id) AS buyers
FROM orders o
JOIN users u ON o.user_id = u.id
WHERE o.order_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY u.channel
ORDER BY buyers DESC;
↑ 这一句,就把「各渠道最近 7 天的购买用户数」拉出来了——SELECT + JOIN + GROUP BY 全部用上。
实战示例:PM 最常写的三句查询
- 查 DAU:SELECT COUNT(DISTINCT user_id) FROM logs WHERE dt = '2026-01-01';
- 查留存:按「注册日」分组,统计该日注册用户中第 7 天仍活跃的人数——需要子查询或 JOIN 两次日志表。
- 查转化:漏斗每一步的人数——把各环节事件表 UNION 起来按步骤统计。
先想清楚再写:写 SQL 前先在纸上回答「我要回答什么问题 → 需要哪些表 → 怎么关联」——这比会写语法重要得多(呼应「问题→数据→结论」链条)。
上手步骤:三周掌握取数
1
第 1 周:三件套打底
学 SELECT/WHERE/GROUP BY/JOIN,配合在线练习平台刷题——目标是独立写出「按维度统计」的查询。
2
第 2 周:常用函数
COUNT/SUM/AVG/MAX、日期函数(DATE_SUB、DATEDIFF)、条件 CASE WHEN——留存和转化都会用到。
3
第 3 周:真实数据练手
用公开数据集或公司库,复现「DAU / 留存 / 转化」三个常见指标——能跑通就算入门。
4
持续:查自己的产品
工作中遇到任何「感觉不对」的指标,先自己查一遍数据——SQL 是「用」会的。
技巧与避坑
- 先 SELECT 再写条件:先跑一条简单的把表结构看清楚,再往上加 WHERE/JOIN——避免一次写太复杂查错。
- COUNT(DISTINCT) 要记牢:统计「人数」永远用 DISTINCT 去重,否则一个用户多笔订单会被算多次。
- 别在 SQL 里算业务逻辑:复杂口径(如「有效订单」)先和团队对齐定义,再写进查询——口径不同,结论就错。
- 常见坑:① JOIN 忘加关联条件导致「笛卡尔积爆炸」;② 时区/日期口径不一致;③ 只查「正常」数据不查异常——先看总量对不对。
- 安全:只读查询为主,别在生产库乱写 UPDATE/DELETE——取数用只读账号。
视频学习:跟着敲一遍
SQL/MySQL 数据分析入门到实战 · 配合「三件套语法」边看边练