700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 大数据SQL经典面试题系列(3) -网易严选/考拉数据分析SQL题

大数据SQL经典面试题系列(3) -网易严选/考拉数据分析SQL题

时间:2024-04-10 21:15:34

相关推荐

大数据SQL经典面试题系列(3) -网易严选/考拉数据分析SQL题

查询每个用户第一单的消费金额

现在数据库中有一张用户交易表order,表结构为:

userid---用户IDamount--- 消费金额paytime--- 支付时间

请写出对应的SQL语句,查出每个用户第一单的消费金额。

select a.userid,a.amountfrom(select * ,rank() over(partition by userid order by paytime) as paytime_rank from order) a where paytime_rank=1;

查询每个月的新客数,当月有复购的新客数,新客当月复购率

现在数据库中有一张用户交易表order,表结构为:

userid---用户IDorderid---订单IDamount--- 消费金额paytime--- 支付时间

请写出对应的SQL语句,查出每个月的新客数(新客指在严选首次支付的用户)

-- sql1 : 获取年月,提升数据粒度select*,data_format(paytime,'%Y-%m') as ymfromorder;-- sql2 : 获取用户第一次支付的时间selectuserid,min(ym) as min_ymfromsql1group byuserid;-- sql3 : 统计每月新增人数selectcount(*)fromsql2group bymin_ym;--组合起来:selectcount(*)from(selectuserid,min(ym) as min_ymfrom(select*,data_format(paytime,'%Y-%m') as ymfromorder) t1group bytuserid) t2group bymin_ym;

请写出对应的SQL语句,当月有复购的新客数。

-- sql1 : 获取年月,提升数据粒度select*,data_format(paytime,'%Y-%m') as ymfromorder;-- sql2 : 获取第一次支付当月支付记录大于1的用户IDselectuseridfromsql1group byuserid,ymhavingym = min(ym) and count(*) > 1;-- 组合selectuseridfrom(select*,data_format(paytime,'%Y-%m') as ymfromorder) t1group byuserid,ymhavingym = min(ym) and count(*) > 1;

请写出对应的SQL语句,新客当月复购率(公式=当月有复购的新客数/月总新客数)。

第二题的查询结果除以第一题的查询结果,不多说。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。