数据分析 SQL

在真实数据库上练 SQL,每条查询都帮你检查

在浏览器里对一个 410 万行的航空公司数据库写查询。每个答案都会和期望结果比对,从你的第一条 SELECT 到窗口函数、留存分析和面试题。

无需绑卡。全部理论和第一个单元免费;一张通行证解锁 Nomto 的所有课程。

  • 82 节课,248 道题
  • PostgreSQL 语法
  • 每道题都有 AI 导师
-- 乘客最多的五条航线
SELECT a.city || ' → ' || b.city AS route,
       COUNT(*) AS passengers
FROM ticket_flights tf
JOIN flights f  ON f.flight_id = tf.flight_id
JOIN airports a ON a.airport_code = f.departure_airport
JOIN airports b ON b.airport_code = f.arrival_airport
GROUP BY route
ORDER BY passengers DESC
LIMIT 5;
routepassengers
Moscow → St. Petersburg37575
St. Petersburg → Moscow35427
Moscow → Novosibirsk29063
Novosibirsk → Moscow28239
Moscow → Sochi23098

5 行

课程内容

两个方向:从零基础到面试水平

刚接触 SQL,就从「SQL 基础」开始。已经会写 JOIN 和 GROUP BY,可以直接进入「SQL 进阶」。

SQL 基础

9 个单元 · 31 节课 · 94 道题

分析师每天都在写的查询,按由浅入深的顺序学。

  1. 数据是怎么组织的
  2. SELECT:第一条查询
  3. WHERE:筛选行
  4. 函数:数字、字符串和日期
  5. GROUP BY 与 HAVING
  6. JOIN
  7. CASE 与 NULL
  8. 子查询与 CTE
  9. UNION 和两个综合项目

SQL 进阶

16 个单元 · 51 节课 · 154 道题

数据分析团队和面试官真正会考的查询。

  1. 窗口函数:排名、占比、累计值
  2. 日期序列:补齐没有数据的日期
  3. 自连接、全连接与递归
  4. 窗口框架与百分位数
  5. Gaps and islands(连续区间)
  6. 会话与用户路径
  7. ROLLUP 与 CUBE
  8. JSON 与数组
  9. 变更历史(SCD2)
  10. 数据质量
  11. DAU、留存与 LTV
  12. 实验与 A/B 测试
  13. 面试题
  14. 两个综合项目

一节课怎么上

简短理论、逐行解析、三道题

  1. 简短理论

    每节课只讲一个概念,配一条可以直接运行的示例查询和要点回顾。

  2. 逐行解析

    把一条完整的查询逐行拆开:每个子句做什么、为什么要写。

  3. 三道题

    热身、核心、挑战各一道。每道题都有起始查询、两条提示,需要时还能查看答案。

示例

一道题,以及检查器会告诉你什么

查询能跑通,不代表结果就对。检查器会把你的结果和期望结果比对,并指出问题在哪:列不对、多了几行,还是顺序错了。

热身 · GROUP BY 与 HAVING

哪些机场在整个时间段内的出发航班超过 400 班?按 flights_count 从高到低排序。

期望的列: departure_airport flights_count

FROM flights

你的查询

SELECT departure_airport,
       COUNT(*) AS flights_count
FROM flights
GROUP BY departure_airport
HAVING COUNT(*) >= 400
ORDER BY flights_count DESC;

✗ 返回 19 行,应为 18 行。多出来的是 Khabarovsk(KHV),正好 400 班:「超过 400」是 >,不是 >=。

✓ HAVING COUNT(*) > 400 — 正确:18 个机场。其中只有五个超过一千班。

数据

真实的航空公司数据库,不是十行玩具数据

航班、订单、机票和登机牌,再加上会员计划、App 事件和 A/B 实验,让数据分析题有真正可分析的东西。

14 张表

4.1M 行数据

  • 基于 Postgres Professional 的演示数据库,这是 SQL 教学的经典数据集。
  • 你写的是 PostgreSQL,这是大多数数据分析团队使用的方言。
  • 查询在只读沙盒中运行:不用安装任何东西,也不会弄坏数据。

学习工具

卡住时有人帮,想试就随便试

每道题都有 AI 导师

问问它你的查询为什么不对。导师能看到题目和你的结果,引导你自己改对,而不是直接给答案。

练习场

可以在整个数据库上自由运行查询的控制台,旁边就是表结构。用数据回答你自己的问题。

速查手册

课程中用到的每个子句和函数都有一张简短的卡片,课程里可以直接跳转。

适合谁

为工作中要用 SQL 的人设计

价格

免费开始,用通行证解锁全部内容

免费

  • 全部理论和逐行解析
  • SQL 基础的第 1 个单元
  • 试用 30 次检查(未登录 10 次)
  • 向导师提问 3 次(未登录 1 次)

Nomto 通行证

  • 全部 25 个单元和 248 道题
  • 检查次数不设每日上限
  • 更多导师提问次数
  • Nomto 的其他所有课程

一张通行证适用于 Nomto 的所有课程。价格在付款时显示。

你的语言

中文讲解,也支持英语、西班牙语、俄语、葡萄牙语和越南语

SQL 在哪里都一样。理论、提示和导师都使用你在课程中选择的语言:中文、英语、西班牙语、俄语、葡萄牙语或越南语;表名和列名保持英文。

免费开始练习 →

SQL 指南

全部 SQL 指南 →

常见问题

需要安装什么吗?

不需要。每条查询都在浏览器里、在只读沙盒中对我们的数据库运行。只要有浏览器就行;写 SQL 用电脑会比手机方便。

完全零基础也能学吗?

可以。「SQL 基础」从数据在表里是怎么组织的、以及你的第一条 SELECT 讲起。每节课都是简短理论、逐行解析和三道题,难度从热身到挑战。

教的是哪种 SQL 方言?

PostgreSQL 语法,这是大多数数据分析团队使用的方言。学到的内容可以迁移到 BigQuery、Snowflake、Redshift 和 MySQL,只有少量差异。

练习题有答案吗?

有。每道题都有两条提示和一份参考答案,检查通过后还会说明结果代表什么。检查器也会指出你的结果哪里不对:列不对、多了几行,或者顺序错了。

对 SQL 面试有帮助吗?

「SQL 进阶」有专门的面试题单元,面试官最常问的主题也各有单元:窗口函数、gaps and islands、会话、留存和实验。

哪些内容免费?

全部理论和逐行解析、「SQL 基础」的第一个单元,以及免费试用:登录后 30 次检查和 3 次导师提问(未登录 10 次检查和 1 次提问)。Nomto 通行证解锁所有单元和 Nomto 的所有课程;价格在付款时显示。

写下你的第一条查询

第一节课只需几分钟。第一次通过检查,你就知道它是怎么运作的。