题解 | #10月的新户客单价和获客成本#

10月的新户客单价和获客成本

https://www.nowcoder.com/practice/d15ee0798e884f829ae8bd27e10f0d64

1、10月份新客户首单信息的提取,可以用where条件进行过滤:
where (uid,event_time) in
(select uid,min(event_time) from tb_order_overall
group by 1
having date_format(min(event_time),'%Y-%m')='2021-10'
用户最早购买的时间必须在10月,所以having date_format(min(event_time),'%Y-%m')='2021-10',同时又是要求首单的相关信息,所以在条件过滤时采用了
(uid,event_time)的组合形式
2、求新户客单价和获客成本:
新户客单价=所有新客户的首单总金额/新户的个数;
获客成本=sum(新客户首单的应付总金额-实付总金额)/新用户的个数
1)首先,需要将三个表连接一下
select *
from tb_order_detail tod
join tb_order_overall too using(order_id)
join tb_product_info tpi using(product_id)
2)其次,我们需要确定*需要取哪些字段,uid,total_amount,price,cnt是我们需要的关键字段。
由于每个用户的order_id是固定的,在明细表中,一个用户可能买多种商品,我们连接的表中就会有同一个用户的order_id信息,也就是说同一个用户有多行包含一样的total_amount
为了得到用户的平均客单价,我们需要按照uid,total_amout分组求(price*cnt),这就完成了最关键的一步
3)在2的基础上,我们获得了uid,total_amount,sprice(即用户实际应该付的钱数),我们只需要在求均值就🆗了。
select round(sum(total_amount)/count(uid),1),
round(sum(sprice-total_amount)/count(uid),1) from
(select  uid,total_amount,sum(price*cnt) sprice from tb_order_detail tod
join tb_order_overall too using(order_id)
join tb_product_info tpi using(product_id)
where (uid,event_time) in
(select uid,min(event_time) from tb_order_overall
group by 1
having date_format(min(event_time),'%Y-%m')='2021-10') 
group by 1,2) a



全部评论

相关推荐

one_t:硕还是本?什么岗
点赞 评论 收藏
分享
藏剑天涯:全要了 领4份工资
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务