CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
商业智能分析师入门/课时/SQL 分析查询
RawBlame
课时目录12 节

商业智能分析师入门

  1. 01BI 分析师是什么
  2. 02数据类型与质量
  3. 03描述统计与推断
  4. 04SQL 分析查询
  5. 05Excel 与 Python 工具
  6. 06数据可视化
  7. 07数仓与数据建模
  8. 08分析类型与 ML 入门
  9. 09行业应用场景
  10. 10沟通与职业发展
  11. 11BI 平台概览
  12. 12综合练习

SQL 分析查询

基础/高级查询、窗口函数。

35 分钟

SQL 分析查询

SQL 是 BI 分析师最高频的工具:从数仓取数、聚合 KPI、做 cohort 与排名,都依赖扎实的查询能力。与 /roadmaps/bi-analyst 中 SQL 节点对齐。

学习目标

  • 熟练 SELECT、JOIN、GROUP BY、HAVING 分析写法
  • 掌握窗口函数做排名、累计、同比
  • 避免常见性能与口径错误(笛卡尔积、重复计数)

核心概念

基础分析模式

-- 每门课程的 lesson 数量
SELECT t.slug, t.title, COUNT(l.id) AS lesson_count
FROM cf_track t
LEFT JOIN cf_lesson l ON l.track_id = t.id
GROUP BY t.id, t.slug, t.title
ORDER BY lesson_count DESC;
  • LEFT JOIN:保留无 lesson 的 track
  • GROUP BY:与 SELECT 非聚合字段一致
  • 用 COUNT(DISTINCT user_id) 防重复计数

高级:窗口函数

函数用途
ROW_NUMBER()每组 Top N
SUM() OVER (...)累计 GMV、Running total
LAG/LEAD环比、前后对比
NTILE用户分群(十分位)
-- 按 category 内课程 lesson 数排名
SELECT slug, category, lesson_count,
       ROW_NUMBER() OVER (PARTITION BY category ORDER BY lesson_count DESC) AS rn
FROM mart_track_stats;

CTE 与可读性

用 WITH 拆步骤:清洗 → 聚合 → 最终 SELECT。复杂报表 一个巨型嵌套子查询不如 3 层 CTE 可维护。

性能与规范

  • 过滤条件尽量 先 WHERE 再 JOIN(优化器会改写,但逻辑要清晰)
  • 大表加日期分区条件,避免全表扫
  • 明细层与汇总层分离:BI 查 mart,少直接扫 ODS 亿级表

练习

  • 写出「各 level 课程数量及占比」的 SQL
  • 用窗口函数求每个 category 下 lesson 数 Top 3 的 track
  • 解释 INNER JOIN 与 LEFT JOIN 在漏斗分析中的选择

小结

SQL 连接业务问题与数据表;JOIN 定口径,窗口函数定视角。 深入见 sql-essentials,下一课补 Excel 与 Python 工具链。

加载本节练习…
← 上一课描述统计与推断
下一课 →Excel 与 Python 工具