SQL 数据分析指南
写给学习者的实用指南,每个示例都能直接运行。

SQL 基础查询语句:SELECT、WHERE、ORDER BY、GROUP BY 和 JOIN 入门
SQL 入门教程:用航班数据库的真实例子,一步步学会 SQL 基础查询语句,从 SELECT 到 JOIN,以及新手最常犯的错误。

数据分析师学习路线:学什么、按什么顺序学、需要多长时间
一份务实的数据分析师学习路线:先学 SQL,再学电子表格、统计学基础、BI 和图表,Python 放后面,然后是作品集和面试准备,附哪些可以先跳过和实事求是的时间估计。

ROW_NUMBER、RANK、DENSE_RANK 的区别:并列时怎么排名
ROW_NUMBER、RANK 和 DENSE_RANK 只在并列时不同。一张表看懂三者,再讲分组取前 N、去重、排行榜和第 N 高的值该用哪个,以及 NTILE 和 PERCENT_RANK。

SQL 聚合函数:COUNT、SUM、AVG、MIN、MAX 用法与实例
SQL 聚合函数详解:COUNT(*)、COUNT(列) 与 COUNT(DISTINCT) 的区别,SUM、AVG、MIN、MAX,聚合函数怎样处理 NULL,配合 GROUP BY 和 FILTER 使用,以及让合计出错的陷阱。

SQL CASE WHEN 用法:条件判断、分组归类与条件聚合
SQL CASE WHEN 怎么用:简单 CASE 与搜索 CASE、把数值分档归类、自定义排序、NULL 的处理,以及用 SUM、COUNT 和 FILTER 做条件聚合,附真实运行结果。

SQL 速查表(数据分析师版):常用语句和函数,每条都附可运行的例子
一页看完数据分析常用 SQL:SELECT 到 ORDER BY、筛选、聚合函数、JOIN、CASE、NULL 处理、子查询和 CTE、窗口函数、日期和字符串函数,每一项都有真实运行结果。

SQL CTE(WITH 用法):把查询拆成一步一步好读的写法
SQL CTE 和 WITH 子句怎么用:基本语法、串联多个步骤、重复引用结果、递归 CTE、CTE 与子查询和临时表的区别,以及常见错误,附真实运行结果。

SQL 日期函数:提取年月日、按周按月截断、加减间隔与计算日期差
分析师每天都在用的 SQL 日期函数:EXTRACT、date_trunc、INTERVAL 加减和日期相减,附真实运行结果,以及 PostgreSQL 与 DuckDB 的写法差异。

SQL 查找重复数据与删除重复行:GROUP BY、ROW_NUMBER 去重,附例子
用 GROUP BY 加 HAVING COUNT(*) > 1 查找重复数据,用 ROW_NUMBER 或 DISTINCT ON 保留第一条,再在 PostgreSQL、MySQL、SQL Server、DuckDB 和 Hive 里删除重复行。

SQL LAG 和 LEAD 函数:取上一行、下一行,算环比,附例子
LAG 取上一行的值,LEAD 取下一行的值。偏移量和默认值、环比与周同比、事件间隔、PARTITION BY、会话切分和常见错误,附真实运行结果。

SQL LIKE 模糊查询:% 和 _ 通配符、ILIKE、NOT LIKE 与转义
SQL LIKE 模糊查询详解:% 和 _ 通配符怎么用,ILIKE 不区分大小写,NOT LIKE 与 NULL,怎样转义 % 和 _,LIKE 和 = 的区别,什么时候能走索引,附真实运行结果。

SQL NULL 值处理:IS NULL、COALESCE,以及 NULL 在连接、计数和比较中的行为
SQL NULL 值处理详解:为什么 = NULL 查不到数据,IS NULL 与 IS DISTINCT FROM,COUNT 和 AVG 里的 NULL,COALESCE 与 NULLIF,排序、LEFT JOIN 和 NOT IN 陷阱,附真实运行结果。

SQL ORDER BY 排序:升序降序、多字段排序、NULLS LAST 与取前 N 条
SQL ORDER BY 排序详解:ASC 升序与 DESC 降序,多字段排序,NULL 排在哪里,按别名、列序号或 CASE 自定义排序,LIMIT 取前 N 条与并列,中文按拼音排序,附真实运行结果。

SQL 行转列与列转行:PIVOT、UNPIVOT 和 CASE WHEN 写法实例
SQL 行转列怎么写:通用的 CASE WHEN 和 FILTER 条件聚合,DuckDB、SQL Server、Spark SQL 的 PIVOT 与 UNPIVOT 语法,PostgreSQL 的 crosstab,以及动态列为什么难,附真实运行结果。

SQL 累计求和:用窗口函数计算累计值、分组累计与重置
SQL 累计求和怎么写:用 SUM() OVER 计算累计值、按分组累计、按月重置、并列值的处理、ROWS 与 RANGE 窗口框架的区别,附真实运行结果。

SQL 自连接(Self Join)详解:配对、航班中转与历史记录,附例子
SQL 自连接就是同一张表起两个别名再 JOIN。例子:用 a < b 去掉重复配对、找中转航班、往返行程、串联历史版本,以及什么时候该改用 LAG/LEAD。

SQL 字符串函数大全:CONCAT、SUBSTRING、REPLACE、UPPER、TRIM 用法与实例
数据分析常用的 SQL 字符串函数:CONCAT 和 || 拼接、SUBSTRING 截取、SPLIT_PART 分割、REPLACE 替换、UPPER 大小写、TRIM 去空格、LPAD 补零和正则,附真实运行结果。

SQL 子查询:WHERE、SELECT、FROM 里的子查询用法与实例
SQL 子查询怎么写:标量子查询和列表子查询、IN、EXISTS、相关子查询、派生表,以及 NOT IN 遇到 NULL 的陷阱,附真实运行结果。

SQL 和 Excel 的区别:数据分析该用哪个,以及怎么从 Excel 转到 SQL
实话实说 SQL 和 Excel 的区别:各自擅长什么,VLOOKUP、数据透视表、筛选、IF 和 SUMIFS 分别对应 JOIN、GROUP BY、WHERE 和 CASE,附真实查询。

UNION 和 UNION ALL 的区别(附 INTERSECT 和 EXCEPT),SQL 实例详解
UNION 会去重,UNION ALL 保留所有行。什么时候用哪个,INTERSECT 和 EXCEPT 怎么用,合并查询的规则,以及会让合计出错的常见陷阱。

GROUP BY 和 HAVING 的区别(以及 WHERE 和 HAVING 的区别),附实例
GROUP BY 和 HAVING 各自做什么,HAVING 和 WHERE 有什么不同,SQL 的执行顺序,以及会让分组结果报错或悄悄出错的常见写法。

用 SQL 做留存分析:次日与 7 日留存、周留存矩阵和滚动留存
用 SQL 做同期群留存分析:定义同期群,计算次日留存和 7 日留存,构建带成熟度规则的周留存矩阵,以及复购留存。附真实运行结果。

数据分析师 SQL 面试题:20 道常考题及参考答案
20 道数据分析岗 SQL 面试题,包括概念题和现场写查询:JOIN、NULL、GROUP BY、窗口函数、第 N 高、中位数、复购率,附参考答案和真实运行结果。

SQL JOIN 用法详解:INNER、LEFT、FULL、自连接与反连接
在真实数据表上讲清每种 SQL JOIN:INNER、LEFT、FULL OUTER、自连接和反连接,JOIN 为什么会让行数翻倍,以及如何避免 SUM 和 COUNT 重复计算。

SQL 练习题及答案:15 道由浅入深的题目,附真实运行结果
基于同一个真实航空数据库的 15 道 SQL 练习题,从 SELECT、WHERE 到 JOIN、HAVING、子查询和窗口函数,每题都有答案查询和真实输出。

SQL 窗口函数详解:ROW_NUMBER、RANK、LAG 与累计求和
SQL 窗口函数怎么用:OVER 和 PARTITION BY、ROW_NUMBER 与 RANK 与 DENSE_RANK 的区别、分组取前 N、累计求和、移动平均、LAG/LEAD 和窗口框架,附真实运行结果。