第一周学习总结

学习背景:

本科商科,研究生管理&信息系统,完全没有纯粹的数分实习经历.

有做过轻量型的实战电商数据项目(照猫画虎),上过其他机构的课程(主要是python),也刷过sqlzoo,hackerrank,以及牛客网的sql题.

本周学习内容为:

1. day01-06所有内容: 这些内容算是mysql中最基础的部分.之前已经接触了蛮多的

2. 完成了mysql45题的练习, 大约有10-15题是和提供的答案有所出入的. 涉及到排名相关的题目,对变量的用法掌握程度不够. 主要是一开始没有搞懂变量赋值这一操作在语句中的执行顺序是怎么样的.

3. 这周写了大概 20-25题的leetcode, 低中高难度都有. 

难点还是在于多表查询,过滤条件的特殊写法,以及巧用union产生新表和enum的字段,

例子: 定义变量解题

leetcode-1285


select log_id, case when @id = log_id - 1 then @num:=@num

ELSE @num:=@num+1 end as num, @id:= log_id from logs,(SELECT @num:=0, @id:=0) a(SELECT @num:=0, @id:=0) a

这题的思路是将 连续出现的数字归为一类. 

这里采用@num这一变量对连续出现的数字进行标注分组,

@id初始值为0,将0和第一条记录的log_id-1进行比较,

0等于1-1 成立 则第一行记录对应的num为@num的原始值0,

在对第一行记录结束之后, @id被赋值为1,

接着看第二行记录, 1 = 2 - 1 成立, 则 第二行记录对应的num还是为@num的原始值0,

第三行同理

第四行log_id 为7, @id为第三行返回的3, 3 不等于7-1, 则第四行对应的@num应该为上一行返回的@num + 1, 即 第四行的num为1. 

第五行同理. 以此类推,把连续的数字分为了一组.

变量的执行顺序此处引用其他同学的总结:

"目前的理解是:先执行from后面的语句以对变量赋值,之后执行order by语句,根据列值进行排序,最后执行select后面的语句,使得定义变量得以自增。"



下周学习内容:

1. 总结mysql45题内容, 进行题型的分类讨论归纳.

2. python方面,大概地过一遍学习视频

你可能感兴趣的:(第一周学习总结)