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 数据分析入门到实战 · 配合「三件套语法」边看边练