sql学习进度
SQL 学习进度
更新日期:2026-10-16
现在学到哪里
- 方向:数据分析;环境:MySQL 8.0、Navicat,使用牛客刷题。
- 已完成「SQL必知必会」,正在做「SQL热题」和「SQL大厂笔试真题」。
- 本对话「SQL刷题与复习2」继续 SQL;Python 在另一个独立对话学习。
- 常用查询知识已覆盖较多,继续通过题目巩固。增删改、触发器、事务的学习状态分别记录,不笼统认定 SQL 已全部学完。
最近几项的准确状态
| 内容 | 已经做到 | 当前还缺什么 |
|---|---|---|
| 按岗位求平均工时 | 已提交 FROM 子查询版本;按秒计算后除以 3600,按岗位 AVG,再 ROUND 至 3 位;代码结构检查通过 | 未收到完整原表、完整官方输出要求与判题结果;未在用户数据库执行 |
| TIMESTAMPDIFF | 已理解秒数换算小数小时,08:45~17:00 是 8.25 小时;现已在工时查询中使用 | 继续在实际题目中练习;DATEDIFF 日期差用法保留 |
| COUNT 配 OVER | 已讲岗位内计数与全表计数,展示过每位员工保留的结果 | 尚未收到针对该用法的独立练习代码 |
| 4、4、2 排成 1、2、3 | 已讲 ROW_NUMBER 与 RANK、DENSE_RANK 的区别,以及同分时加唯一排序字段 | 本次例子尚未收到独立提交 |
| 周杰伦听歌题的语法报错 | 只收到 near '.user_id ...' 等报错片段 | 尚未收到完整 SQL,不能确定唯一错因;后续提供代码再定位 |
本轮笔记整理已把旧进度中“等待完整工时 SQL”更新为“已收到子查询版本”。代码文本检查与平台判题通过分别记录。
重点题目
| 题目 | 状态 | 复习时看什么 |
|---|---|---|
| SQL47 | 已独立写出按用户编号与评分组合 DISTINCT,再在外层 AVG;逻辑检查正确,末尾多余中文引号已指出 | 按用户去重,不能只按评分去重 |
| SQL48 | 已独立正确组合商品销量汇总、JOIN、RANK 分区和最终排序;旧对话按题面检查,未在用户数据库执行 | 先得到每商品一行;窗口只按销量判并列,product_id 放最终排序 |
| SQL241 | 已写对按员工分区、按 id 排名后查询 rk = 1 的保留行 | 实际 DELETE 语句仍待独立提交;查出保留行不等于删除原表 |
| SQL211 | 仍待巩固;曾保留 GROUP BY、缺少 PARTITION BY,后仅补 DESC;明确要求先跳过 | 尊重跳过安排,不强行追问;SQL48 应用正确也不自动结清本题 |
| SQL220 | 待独立重写 | 入职工资同时匹配 emp_no 与 hire_date = from_date;当前工资按本题规定取值 |
SQL48 最终排序要求:category ASC、total_sales DESC、product_id ASC;排名窗口内不加唯一 product_id,以保留销量并列。
SQL211、SQL220 的必要原表和目标结果已集中到附录 R01、R02。SQL220 的 9999-01-01 条件仅按该题明确规定使用。
尚未完成的学习与复习
| 项目 | 目前状态 | 下一步检查点 |
|---|---|---|
| UPDATE | 2026-10-16 安排的复习未完成;已有讲解,尚未系统完成独立练习 | 单列、多列;逗号分隔赋值;NULL 不加引号;WHERE 修改范围 |
| UPDATE + REPLACE | 已讲过组合,待独立练习 | 根据原值替换片段,与直接设成固定值的区别 |
| INSERT | VALUES、IGNORE、INSERT SELECT 已有说明,待系统独立练习 | 列与值的位置对应、一次多行、唯一键冲突 |
| DELETE | 已讲按条件删除、重复行删除的思路,未系统完成独立练习 | 查询结果与原表修改的区别;SQL241 的实际删除 |
| 触发器 | 已有概念和示例;原计划 2026-10-14,正式学习仍待进行 | 用 actor 表,从 BEFORE INSERT、FOR EACH ROW、NEW 逐项讲,再练一题 |
| 事务 | 尚未系统教学 | 后续单独学习 START TRANSACTION、COMMIT、ROLLBACK,不作为继续刷查询题的前置条件 |
| 索引 | 已讲三种创建语法、FORCE INDEX;未记录独立实操 | 区分索引名、列名与约束 |
UPDATE 已约定的多列练习:对原 to_date = '9999-01-01' 的行,把 to_date 改为 NULL,同时把 from_date 改为 '2001-01-01'。先练单列,再练多列;给原表、要求与目标表,由用户写,不提前展示答案。
以上是保留的待办,不因新题或整理笔记而标为完成;按当前主线逐项推进,不强制打断正在做的题。
已覆盖知识的概况
| 主题 | 学习记录 |
|---|---|
| 查询、筛选、别名 | 已讲并练习;包括日期范围、LIKE、IN、NULL 判断 |
| 聚合、分组、去重、排序 | 已讲并有独立代码;复杂统计口径继续巩固 |
| JOIN、LEFT JOIN、三表连接 | 已独立写对多题;ON / WHERE 与一对多后的金额、人数仍需穿插复习 |
| 子查询与 WITH | 三个常见位置、关联子查询、分层传列已讲并有独立代码 |
| CASE 与条件聚合 | 条件计数、金额贡献已练;高价占比继续巩固 |
| 常用函数 | 数值、字符串、日期、类型与缺失值处理已讲;熟练程度随实际题目检查 |
| 窗口函数 | 排名、同类均价、累计、移动平均、LAG / LEAD、分层环比已有独立正确代码 |
| 订单与用户指标 | 订单数、买家数、平均金额、复购标记、复购比例与付款贡献已写对 |
| 购买比例 | 全体和按城市分组的 LEFT JOIN、去重人数、比例已有正确完整代码 |
| 次日回访 | 每人 0/1 标记与日期关联写对,曾需补末尾用户编号排序;按注册日的完整留存率仍待独立提交 |
继续穿插复习
- GROUP BY 与 PARTITION BY 的行数差异:SQL211 保留待巩固,尊重先跳过。
- SQL220 独立重写;SQL241 实际删除。
- 按注册日期汇总次日留存率,尚未收到完整独立查询。
- 高价占比、日期端点、ON 与 WHERE、连接后的统计粒度。
- 部分日期边界与排名编号题提供过修正,但尚未逐题收到独立完整修正版。
- NOT IN 遇到 NULL、类型转换实操、执行计划与索引,按实际题目需要再补。
教学与笔记约定
- 中文、直接、一次一个知识点;区分首次系统教学、旧知识的新组合、复习。
- 先看用户代码;解释题目先给思路和小提示。明确要求代码时再给完整答案。
- 布置练习提供原表、需求、目标结果;优先沿用已有数据,不强制用 WITH。
- 难题先确认最终每行代表什么,再写中文步骤,展示必要的 JOIN 后结果和中间表。
- 区分语法、统计口径与处理顺序、输出别名及排序;不把尝试次数当作唯一进度标准。
- 严格按题面加条件;不凭题号或别人的题解补过滤。需要核对时查官方题面。
- 独立提交、文本检查、实际运行、判题通过分别记录;无证据不标为掌握。
- 主笔记只保留重点、必要语法和最小例子;完整题目及长代码放附录;状态和待办放本文件。
- 同一知识点更新原条目,不不断新建零散笔记。用户要求保存时实际落盘。
- 所有 sources/ 同步材料只读。本次仅更新原有 learning-notes 下的手工笔记,整理前版本已备份。
历史复习安排中的“明天”均按原记录日期理解,不在本文件自动改成新的预约或提醒。旧对话、逐次交接和整理前文本保存在历史记录与 archive 备份中。



浙公网安备 33010602011771号