第一套
面试题1.请写出表一中各地市客户数、总费用(ARPU之和) 的SQL语句
2.请写出表一中各地市ARPU(0,30),[30,50),[50-80),[80以上)客户数分别是多少的SQL语句
3.表二中用户有重复的记录,请写出提取2条及以上用户的SQL语句
解答1
select
解答2
select
解答3
select
第二套
思路:第一步--按照用户和场景分组,求每组的最近访问时间,按照用户和访问时间 升序排列,记为表1,目的是为了避免重复场景出现。
第二步-- 使用窗口函数,对表1用户名进行分组,按照访问时间升序排列,记为表2;
第三步-- 筛选表2每组访问时间的前两名,然后对用户进行分组,使用group_concat函数对分组后的场景进行连接,最后使用concat函数将用户名和联结好的场景再次联结。
select
第三套
1.建数据库和表
create
2.导入数据
日期格式处理(不处理也可以)
update
1.每天的活跃用户数
select
2.次日留存
select
次日留存,三日留存,7日留存等只需要更改日期相差的天数即可。
因为这道题需要一条sql语句得到图中的结果,那么我们再求留存时可以通过另一种方法。
select
第四套
1.建表
CREATE
2.行转列
select
第五套
1.建表
create
2.列转行
select
第六套
1.建表
create
2.添加索引
create
3.解答
select
第七套
1.建表
create
2.第一问
select
3.第二问
DROP
第八套
1.建表
create
2.解答a
drop
2.解答b
select
第九套
2.建表导入数据
2.1用户活跃模型表
2.2红包参与领取模型表
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
第十套
1 建表
create
2 解答
select
题目参考
数据分析SQL面试题目9套汇总www.jianshu.com会持续不断的更新,欢迎大家批评指正。
我的公众号 DataLion,欢迎大家关注。