作为大数据分析师,使用的最多的莫过于SQL语句,这里拿几道典型的SQL面试题为例,学习一下数据库知识。
自己搭建MySQL服务器太麻烦,可以使用在线数据库
练习1 计算连续登陆天数 关键词 row_number
题目:SQL语句如何查询各个用户最长的连续登陆天数?如图左边是源表User,右边是需要达到的查询结果,试了row_number,但是无法达到连续登陆这个条件。
左边源表,右边期望结果
首先在在线数据库中创建表,插入上图左边源表数据 CREATE TABLE IF NOT EXISTS `loadrecord` ( `uid` int(6) unsigned NOT NULL, `loadtime` varchar(200) NOT NULL, PRIMARY KEY (`uid`,`loadtime`) ) DEFAULT CHARSET=utf8; INSERT INTO `loadrecord` (`uid`, `loadtime`) VALUES ('201', '2017/1/1'), ('201', '2017/1/2'), ('202', '2017/1/2'), ('202', '2017/1/3'), ('203', '2017/1/3'), ('201', '2017/1/4'), ('202', '2017/1/4'), ('201', '2017/1/5'), ('202', '2017/1/5'), ('201', '2017/1/6'), ('203', '2017/1/6'), ('203', '2017/1/7');
答案参考 https://bbs.csdn.net/topics/392243867 (没有成功运行,还需要再研究一下)
Tips1 @和:=
mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。
第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量
第二种用法:select @num:=1; 或 select @num:=字段名 from 表名 where ……
注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”
作者:明轩李
链接:https://www.jianshu.com/p/77597eadd3cc