在真实数据库上练 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;| route | passengers |
|---|---|
| Moscow → St. Petersburg | 37575 |
| St. Petersburg → Moscow | 35427 |
| Moscow → Novosibirsk | 29063 |
| Novosibirsk → Moscow | 28239 |
| Moscow → Sochi | 23098 |
5 行
两个方向:从零基础到面试水平
刚接触 SQL,就从「SQL 基础」开始。已经会写 JOIN 和 GROUP BY,可以直接进入「SQL 进阶」。
SQL 基础
分析师每天都在写的查询,按由浅入深的顺序学。
- 数据是怎么组织的
- SELECT:第一条查询
- WHERE:筛选行
- 函数:数字、字符串和日期
- GROUP BY 与 HAVING
- JOIN
- CASE 与 NULL
- 子查询与 CTE
- UNION 和两个综合项目
SQL 进阶
数据分析团队和面试官真正会考的查询。
- 窗口函数:排名、占比、累计值
- 日期序列:补齐没有数据的日期
- 自连接、全连接与递归
- 窗口框架与百分位数
- Gaps and islands(连续区间)
- 会话与用户路径
- ROLLUP 与 CUBE
- JSON 与数组
- 变更历史(SCD2)
- 数据质量
- DAU、留存与 LTV
- 实验与 A/B 测试
- 面试题
- 两个综合项目
简短理论、逐行解析、三道题
简短理论
每节课只讲一个概念,配一条可以直接运行的示例查询和要点回顾。
逐行解析
把一条完整的查询逐行拆开:每个子句做什么、为什么要写。
三道题
热身、核心、挑战各一道。每道题都有起始查询、两条提示,需要时还能查看答案。
一道题,以及检查器会告诉你什么
查询能跑通,不代表结果就对。检查器会把你的结果和期望结果比对,并指出问题在哪:列不对、多了几行,还是顺序错了。
热身 · 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 面试的人
- 不想排队等分析师、想自己找答案的市场和产品经理
免费开始,用通行证解锁全部内容
免费
- 全部理论和逐行解析
- SQL 基础的第 1 个单元
- 试用 30 次检查(未登录 10 次)
- 向导师提问 3 次(未登录 1 次)
Nomto 通行证
- 全部 25 个单元和 248 道题
- 检查次数不设每日上限
- 更多导师提问次数
- Nomto 的其他所有课程
一张通行证适用于 Nomto 的所有课程。价格在付款时显示。
中文讲解,也支持英语、西班牙语、俄语、葡萄牙语和越南语
SQL 在哪里都一样。理论、提示和导师都使用你在课程中选择的语言:中文、英语、西班牙语、俄语、葡萄牙语或越南语;表名和列名保持英文。
SQL 指南
常见问题
需要安装什么吗?
不需要。每条查询都在浏览器里、在只读沙盒中对我们的数据库运行。只要有浏览器就行;写 SQL 用电脑会比手机方便。
完全零基础也能学吗?
可以。「SQL 基础」从数据在表里是怎么组织的、以及你的第一条 SELECT 讲起。每节课都是简短理论、逐行解析和三道题,难度从热身到挑战。
教的是哪种 SQL 方言?
PostgreSQL 语法,这是大多数数据分析团队使用的方言。学到的内容可以迁移到 BigQuery、Snowflake、Redshift 和 MySQL,只有少量差异。
练习题有答案吗?
有。每道题都有两条提示和一份参考答案,检查通过后还会说明结果代表什么。检查器也会指出你的结果哪里不对:列不对、多了几行,或者顺序错了。
对 SQL 面试有帮助吗?
「SQL 进阶」有专门的面试题单元,面试官最常问的主题也各有单元:窗口函数、gaps and islands、会话、留存和实验。
哪些内容免费?
全部理论和逐行解析、「SQL 基础」的第一个单元,以及免费试用:登录后 30 次检查和 3 次导师提问(未登录 10 次检查和 1 次提问)。Nomto 通行证解锁所有单元和 Nomto 的所有课程;价格在付款时显示。
写下你的第一条查询
第一节课只需几分钟。第一次通过检查,你就知道它是怎么运作的。