1、基本知识:
①简述SQL的书写顺序和执行顺序;
书写顺序:
执行顺序:
②窗口函数:rank、dense_rank、row_number的区别;
③字符串类型和时间类型怎么相互转换;“2021-08-10 10:00:00”怎么转换成“10:00:00”;
复制以下语句建表:
CREATE TABLE table1 ( 性别 VARCHAR(10), 南湖 int, 鼓楼 int, 赛格 int ,新街口 int, 合计 int) charset='utf8';
insert into table1 values ("男",100,0,100,100,300),("女",100,100,0,200,400) ;
测试地址 https://www.db-fiddle.com/
sex | 南湖 | 鼓楼 | 赛格 | 新街口 | 合计 |
男 | 100 | 0 | 100 | 100 | 300 |
女 | 100 | 100 | 0 | 200 | 400 |
表1
area | sex | fee |
南湖 | 女 | 100 |
南湖 | 男 | 100 |
鼓楼 | 女 | 100 |
赛格 | 男 | 100 |
新街口 | 女 | 100 |
新街口 | 女 | 100 |
新街口 | 男 | 100 |
表2
3、测试地址 https://www.db-fiddle.com/
复制以下语句建表:
create table login (uid int,login_time datetime) charset='utf8';
insert into login values
(2,'2021-01-01 12:21:11'),(4,'2021-01-01 12:25:00'),(1,'2021-01-01 21:18:52'),
(3,'2021-01-01 21:30:47'),(2,'2021-01-02 15:38:10'),(4,'2021-01-02 22:31:51'),
(1,'2021-01-02 19:53:08'),(5,'2021-01-02 08:08:46'),(3,'2021-01-03 17:33:48'),
(1,'2021-01-03 11:31:31'),(5,'2021-01-03 22:18:53'),(6,'2021-01-03 11:32:15'),
(5,'2021-01-04 16:59:33'),(2,'2021-01-04 12:53:31');
提示:
- 留存: 某用户今天登录,明天继续登录,则为留存
- 留存率: 第二天回流用户数 / 第一天全部登陆用户数 = 第一天的次日留存率
- 举例: 1月1日登录用户数为100人,其中有 66 人在 1月2日再次登陆,则 1月1日 的次日留存率为 66 / 100 = 0.66
已有:login用户登录表,其中有uid用户编号(int),login_time登录时间(datetime)
要求:计算每天的次日留存率,输出结果如下:
数据