查表五步走:
-- 第1步:确定数据源(FROM + JOIN) FROM 主表 [LEFT/RIGHT/INNER] JOIN 关联表 ON 关联条件 -- 第2步:筛选行数据(WHERE) WHERE 基础筛选条件 AND 业务筛选条件 AND 时间范围条件 -- 第3步:分组聚合(GROUP BY + HAVING) GROUP BY 分组字段 -- 第4步:选择输出字段(SELECT) SELECT 原始字段, 计算字段, 聚合函数(字段) AS 别名 -- 第5步:排序限制(ORDER BY + LIMIT) ORDER BY 排序字段 [ASC/DESC] LIMIT 记录数
导表三步走:
-- 场景1:全量导表(结构+数据) CREATE TABLE 新表 AS SELECT * FROM 原表; -- 场景2:筛选导表(条件数据) CREATE TABLE 新表 AS SELECT 字段列表 FROM 原表 WHERE 筛选条件; -- 场景3:聚合导表(汇总数据) CREATE TABLE 汇总表 AS SELECT 维度字段, 聚合函数(指标字段) FROM 明细表 GROUP BY 维度字段;
表检查四步走:
-- 1. 表结构检查 DESC 目标表; -- 2. 数据量验证 SELECT COUNT(*) FROM 目标表; SELECT COUNT(*) FROM 源表 WHERE 条件; -- 3. 数据质量检查 SELECT COUNT(*) as 总行数, COUNT(主键) as 主键非空数, COUNT(DISTINCT 关键字段) as 唯一值数 FROM 目标表; -- 4. 业务逻辑验证 SELECT 关键指标 FROM 目标表 WHERE 业务条件;
CTE模板:
WITH 数据准备 AS ( SELECT 基础字段 FROM 原始表 WHERE 基础条件 ), 业务计算 AS ( SELECT 计算字段 FROM 数据准备 GROUP BY 分组字段 ), 结果整理 AS ( SELECT 最终字段 FROM 业务计算 WHERE 最终条件 ) SELECT * FROM 结果整理 ORDER BY 排序字段;
CTE就是嵌套语句直接在外定义表的版本,更好看,逻辑更通顺而已。
关联类型处理:
from的A和join的B 保留A全部记录 → LEFT JOIN 只要两表交集记录 → INNER JOIN 全量记录合并 → FULL OUTER JOIN 主表记录存在性检查 → WHERE EXISTS

被折叠的 条评论
为什么被折叠?



