作为大数据分析师,使用的最多的莫过于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时必须用“:=赋值”
网友评论