男女生做爰视频网站,天水网络推广,创建5a 网站建设要求,基于.net的个人网站开发实录最近#xff0c;好几个小伙伴都拿着关于用户留存的面试题来问我#xff0c;所以今天单独开一篇文章讲一下留存问题。首先看一下留存是什么#xff0c;简单来说#xff0c;我和你今天在一家超市购物了#xff0c;明天我来购物了#xff0c;你没来#xff0c;那么我就是这… 最近好几个小伙伴都拿着关于用户留存的面试题来问我所以今天单独开一篇文章讲一下留存问题。 首先看一下留存是什么简单来说我和你今天在一家超市购物了明天我来购物了你没来那么我就是这个超市的留存用户。就是在设定的时间间隔都进行购物的客户一般是计算七日留存就是七天后谁来购物了。 接着我们看题目我就直接上原图了 1.看了下表结构这里我也构造了一些数据 2.看他的需求 第一步是进行了三个判断头部尾部和腰部定义是上个月的不同消费额。 第二步是留存的概念上个月消费了这个月也消费了看到这里同学们应该都想到了关联。 第三步是定义了上个月和这个月的概念这个很重要。 3.我们开始做看到结果集和金额没有关系只是中间需要转换成不同客户层所以我拆开来看先给他 判断好他的消费额t_6 as (select 客户名称, ---计算上月消费用户和他的类别 case when sum(消费金额) 30000 then 头部客户 when sum(消费金额) 10000 then 腰部客户 else 尾部客户 end as 客户类别 from 消费表 where 消费日期 between date 2020-06-01 and date 2020-06-30 group by 客户名称 having sum(消费金额)0))t_7 as (select 客户名称 --对本月消费用户进行去重 from 消费表 where 消费日期 between date 2020-07-01 and date 2020-07-31 group by 客户名称 having sum(消费金额)0)t_g(select 头部客户 as 客户类别 from dual --构造一个客户类别表防止少数据union allselect 腰部客户 as 客户类别 from dual union allselect 尾部客户 as 客户类别 from dual ) 这三段代码分别可以得到下面数据select tg.客户类别, --最后将他们关联起来即可 count(t6.客户名称) as 用户量, count(t7.客户名称) as 留存用户 from t_g tg left join t_6 t6 on tg.客户类别 t6.客户类别 left join t_7 t7 on t7.客户名称 t6.客户名称 group by tg.客户类别---总的代码如下with 消费表 as(select 张三 as 客户名称,date2020-06-01 as 消费日期,10000 as 消费金额 from dual union allselect 张三 as 客户名称,date2020-06-09 as 消费日期,25000 as 消费金额 from dual union allselect 李四 as 客户名称,date2020-06-10 as 消费日期,28000 as 消费金额 from dualunion allselect 王五 as 客户名称,date2020-06-30 as 消费日期,38000 as 消费金额 from dualunion allselect 李四 as 客户名称,date2020-07-10 as 消费日期,680 as 消费金额 from dualunion allselect 李四 as 客户名称,date2020-07-15 as 消费日期,6800 as 消费金额 from dualunion allselect 王五 as 客户名称,date2020-07-25 as 消费日期,3850 as 消费金额 from dualunion allselect 马六 as 客户名称,date2020-07-31 as 消费日期,2900 as 消费金额 from dual),t_6 as (select 客户名称, case when sum(消费金额) 30000 then 头部客户 when sum(消费金额) 10000 then 腰部客户 else 尾部客户 end as 客户类别 from 消费表 where 消费日期 between date 2020-06-01 and date 2020-06-30 group by 客户名称 having sum(消费金额)0) ,t_7 as (select 客户名称 from 消费表 where 消费日期 between date 2020-07-01 and date 2020-07-31 group by 客户名称 having sum(消费金额)0),t_g as (select 头部客户 as 客户类别 from dual union allselect 腰部客户 as 客户类别 from dual union allselect 尾部客户 as 客户类别 from dual )select tg.客户类别, count(t6.客户名称) as 用户量, count(t7.客户名称) as 留存用户 from t_g tg left join t_6 t6 on tg.客户类别 t6.客户类别 left join t_7 t7 on t7.客户名称 t6.客户名称 group by tg.客户类别 最后得到的结果 感觉还不错的话点下在看鼓励一下作者吧 没有关注的也可以关注下公众号~再次感谢