linq to sql 行转列_n套SQL面试题--行转列、留存、日活等

第一套

066be5bdf33f6ff2b51d8cca40f8963f.png

面试题1.请写出表一中各地市客户数、总费用(ARPU之和) 的SQL语句

2.请写出表一中各地市ARPU(0,30),[30,50),[50-80),[80以上)客户数分别是多少的SQL语句

3.表二中用户有重复的记录,请写出提取2条及以上用户的SQL语句

解答1

select 

解答2

select 

解答3

select 

第二套

622f8c877bf35e91112b77b27b63bf0b.png

思路:第一步--按照用户和场景分组,求每组的最近访问时间,按照用户和访问时间 升序排列,记为表1,目的是为了避免重复场景出现。

第二步-- 使用窗口函数,对表1用户名进行分组,按照访问时间升序排列,记为表2;

第三步-- 筛选表2每组访问时间的前两名,然后对用户进行分组,使用group_concat函数对分组后的场景进行连接,最后使用concat函数将用户名和联结好的场景再次联结。

select 

第三套

4f7a03c498608c4db8a60397ded40dcc.png

1.建数据库和表

create 

2.导入数据

3768fdc9579fdbca0d69f07c9ab26df7.png

日期格式处理(不处理也可以)

update 

1.每天的活跃用户数

select 

2.次日留存

select 

次日留存,三日留存,7日留存等只需要更改日期相差的天数即可。

因为这道题需要一条sql语句得到图中的结果,那么我们再求留存时可以通过另一种方法。

select
    

第四套

348cba5b5d4972bb1776d1cb29b9a2a6.png

1.建表

CREATE 

2.行转列

select 

第五套

d5db0b297eb54c9e488b4843679ed2b4.png

1.建表

create 

2.列转行

select 

第六套

337597752446880d219158eefffd9d2a.png

1.建表

create 

2.添加索引

create 

3.解答

select 

第七套

7e9c64e4a521ec9f0479bcfcc3ba0e34.png

1.建表

create 

2.第一问

select 

3.第二问

DROP 

第八套

4f536995316f408665af581be57da960.png

1.建表

create 

2.解答a

drop 

2.解答b

select 

第九套

33976134e2765635d112bf93ad7940e5.png

73c1c4e951981fb7224144974baaad27.png

2.建表导入数据

2.1用户活跃模型表

18aed6f8e8a3dd576f3fb65194baef4f.png

2.2红包参与领取模型表

0b1100fdafd4dbab27aed89025e204b9.png

2.3用户活跃模型表数据导入

2.4红包参与领取模型表数据导入

关注公众号 DataLion ,回复 ‘面试题数据’即可领取。

3.解答

3.1 计算2019年6月1日至今,每日DAU(活跃用户量,即有登陆的用户)

Select  

3.2 计算20190601至今,每日领取红包的新用户数,老用户数,及人均领取金额,人均领取次数

select 

3.3 计算2019年3月至今,每个月按领红包取天数为1、2、3……30、31天区分,计算取每个月领取红包的用户数,人均领取金额,人均领取次数

select 

3.4 计算2019年3月至今,每个月领过红包用户和未领红包用户的数量,平均月活跃天数(即本月平均活跃多少天)

思路:先写出每个月领红包的用户 记为表1,将改表与活跃用户表右联结,根据表1空值与否来区分红包用户还是非红包用户。

Select 

3.5 计算2019年3月至今,每个月活跃用户的注册日期,2019年3月1日前注册的用户日期填空即可

思路:先写出每个用户的注册日期,也就是每个新用户最小的日期,将改表和活跃用户表右联结。

select 

第十套

1ebe8b6d616bd2c8c303813593e026d7.png

1 建表

create 

2 解答

select 

题目参考

数据分析SQL面试题目9套汇总​www.jianshu.com
37063ac95deb20cd786a57a72fe830ff.png

会持续不断的更新,欢迎大家批评指正。

我的公众号 DataLion,欢迎大家关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值