当前位置:首页 » 编程语言 » 数据分析SQL用户流失写法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据分析SQL用户流失写法

发布时间: 2023-02-22 18:07:46

① 有哪些方法和途径获取用户流失的原因及数据

1. 首先要确定好要研究的用户路径由哪些步骤构成,这个可以借助工具统计分析。不同的平台用户进入的路径不同,所以要考虑用户可以从哪些平台进入你的页面。一般包括浏览器、App入口、微信公众号等等,主要是看流失的用户集中于哪一种渠道?

2. 将每个步骤量化为产品中具体的页面或按钮或其他可以被统计的行为。例如访问商品详情页——点击添加购物车——访问结算页面——点击支付——访问支付成功页。比如是注册环节用户流失率高,那就看看是不是注册步骤太复杂,导致用户注册了一半就离开了。

3. 将以上用户行为进行代码埋点(可借助第三方工具或自行统计)。比如网站的竞品、用户常访问的论坛和网站等,通过用户行为分析用户在网站中的行为。比如用户的跳转率,用户是否在注册页面流失?或者是比较看重喜欢待在某个页面,找出用户最关注的点在哪。

4. 通过漏洞视图查看分析以上埋点行为事件的转化率、流失率,找到流失用户的渠道。通过观察用户的流失数据,从数据中发现和总结规律。比如是否在某个时间段(比如改版,或者是添加了某个新功能)用户开始流失、在什么节点达到最高峰,或者是集中在某一个时间点,这段时间内有什么特别的事发生?

5. 分析:最基本的分析是哪一个步骤的流失率比较多,分析原因(也可能完全是猜测)是非活跃用户还是活跃用户,这些用户有没有共性或者特点,是哪一人群体,分别是什么用户(男性用户还是女性用户),有没有哪件事触发了他们的敏感点、或者是为了指标曾刷过数据等等。

6. 当然,如果要精益数据分析,还应该综合考虑流失用户来源(比如来自某个不搭调的广告)、终端设备(比如页面不兼容某种手机)、用户分群(比如只女性用户转化率高男性用户转化率低)等等。了解是什么类型的用户在流失,流失用户的有共性和特点是什么。

7.最关键的步骤是进行验证。此时可以用电话回访、电话、短信、邮件、实地走访、问卷卡片测试、5Why工具、竞品对比等方式接触用户,然后思考优化方式。

最后着手改进,并且进行评估,看改进的效果如何,最后进行改版或者修改运营策略。总之数据分析的循环流程就是:
—>明确问题——查看数据——发现差异——分析原因——进行验证——着手改进——评估改进效果—>>

② 如何用SQL分析电商用户行为数据(案例)

        

本文以“淘宝用户行为数据集”的分析全过程为例,展示数据分析的全过程

——使用工具:MySQL,Excel,Navicat,PowerBI

——分析类型:描述分析,诊断分析

——分析方法:漏斗分析,用户路径分析,RFM用户价值分析,活跃/存留分析,帕累托分析,假设验证分析。

(考虑到阅读体验文章中只放了SQL截图,如需PDF版本,再公众号后台回复“用户行为分析”领取)

(目录如下)

       

1.分析流程和方法

当没有清晰的数据看板时我们需要先清洗杂乱的数据,基于分析模型做可视化,搭建描述性的数据看板。

然后基于描述性的数据挖掘问题,提出假设做优化,或者基于用户特征数据进行预测分析找规律,基于规律设计策略。简单来说:

——描述性分析就是:“画地图”

——诊断性分析就是:“找问题”

——预测性分析就是 :“找规律”


在数据分析中有两个典型的场景:

一种是有数据,没有问题:需要先整体分析数据,然后再根据初步的描述分析,挖掘问题做诊断性分析,提出假设,设计策略解决问题。

 

另一种是已经发现了问题,或者已经有了假设,这种做数据分析更偏向于验证假设。

 

2.淘宝用户行为分析

本次是对“淘宝用户行为数据集”进行分析,在分析之前我们并不知道有什么问题,所以需要先进行描述性分析,分析数据挖掘问题。

我们首先来看下这个数据集的元数据:

       

根据以上数据字段我们可以拿用户行为为主轴从纵深方向提出一些问题,然后再从数据中找答案

       

纵向:

——这个数据集中用户的日活跃和周活跃时间有什么规律吗?

——在当日活跃的用户次日,三日,四日……还有多少活跃?

深向:

——用户从浏览到购买的整体转化率怎么样?

——用户从浏览到购买的路径是怎么样子的? 

——平台主要会给用户推送什么商品?

——用户喜欢什么类目?喜欢什么商品? 

——怎么判断哪些是高价值用户 ? 

 

 

下面是叮当整理的常用分析方法:      

我们可以给前面的问题匹配一下分析方法,便于后面的分析:


为了便于后面的数据分析,在分析之前我们需要先对做一下清洗

看元数据(字段解释,数据来源,数据类型,数据量……)初步发现问题为之后的处理做准备。

       

确定缺失值范围,去除不需要字段,填充缺失内容    

根据元数据格式和后续分析需要的格式对数据进行处理

  


去除重复值,异常值

——去除重复值:并把用户ID,商品ID,时间戳设置为主键

——异常值处理:查询并删除2017年11月25日至2017年12月3日之外的数据

     

查询并删除小于2017-11-25的

——验证数据:      


——分析思路:

——SQL提数:

       

       

——Excel可视化:

       

活跃曲线整体为上升状态,同为周六日,12月2号,3号相比11月25日,26日活跃度更高。

用户在周六周日相比其他时间更活跃(周六周日为休息日,用户有更多时间)

      

一天内用户活跃的最高峰期为21点(用户在这个时间段空闲较多)

 

——分析思路:

——SQL提数:

列出每用户每天及当天后面又活跃的日期,并创建“活跃时间间隔表”用于后面求次日存留,三日存留……

       

对“活跃时间间隔表视图”引用进行分组统计,计算每日存留人数并创建视图

对存留人数表进行计算,统计活跃用户留存率

——Excel可视化:

       

——分析思路:

——SQL提数:

-把各种用户行为分离出来并创建视图方便后续查询用户行为数据

查询整体数据漏斗

——Excel可视化:

       

用户从浏览到购买整体转化率2.3%,具体主要在哪个环节流失还需要再细分用户路径分析

 

——分析思路:

       

——SQL提数:

——PowerBI可视化:

       

用户从浏览到购买的路径主要有4条,路径越长转化率越底

路径1:浏览→购买:转化率1.45%

路径2:浏览→加购物车→购买:转化率0.33

路径3:浏览→收藏→购买:转化率0.11%

路径4:浏览→收藏→加购物车→购买:转化率0.03%

——分析思路:

——SQL提数:


——Excel可视化:

       

——描述性分析:

浏览量top100的商品浏览量呈阶梯分布,越靠前的阶梯之间的落差相对越大在这个阶梯中的商品越少,越靠后商品浏览量阶梯之间的落差相对越小,同阶梯内的商品越多。

浏览量TOP100的商品所属类目中,4756105,3607361,4357323三个类目浏览量远超其他类目。

——分析思路:

——SQL提数:

查询计算商品转化率,升序排列,取前100个

       

——Excel可视化:

       

——描述性分析:

从商品看:有17款商品转化率超过了1。

从类目看:这些商品所属类目分布均匀,除965809,4801426,2735466,2640118,5063620,4789432,2945933这7个类目之外,其他类目都只有一个商品在转化率TOP100的商品中。

——分析思路:

用户价值分析常用的分析方式是RFM模型

       

本次分析中的R,F,M具体定义(仅用于演示分析方法,无实际业务参考价值):

 

——SQL取数与分析:

1)建立打分标准:先计算R,F的值,并排序,根据R,F值最大值和最小值得区间设计本次得打分标准

-查询并计算R,F值创建视图

       

-引用RF数值表,分别查询R,F的最大值和最小值

       

       

-结合人工浏览的建立打分标准      

2)给R,F按价值打分

3)计算价值的平均值

       

4)用平均值和用户分类规则表比较得出用户分类   

     

——Excel可视化      

 

通过描述性分析得到可视化的数据后我们一般会先看一下是否符合业务常识

如果符合常识接下来我们会通过与行业平均数据和本产品的同比环比对比看是否正常,如果不正常就要找原因,设计解决方案,如果正常那就看是否有可以优化的地方。

       

我们首先来看一下这些描述性分析是否符合业务常识和指标是否正常:

       

1.活跃曲线整体为上升状态,同为周六日,12月2号,3号相比11月25日,26日活跃度更高。

2.用户在周六周日相比其他时间更活跃

3.一天内用户活跃的最高峰期为21点

4.从2017年11月15日致2017年12月3日,活跃用户新增38%

5.从2017年11月15日致2017年12月3日,活跃用户次日留存增长18.67%,当日的活跃用户留存也在快速增长,第七日留存比次日留存高18.56%。

6.用户从浏览到购买整体转化率2.3%

7.用户从浏览到购买的路径主要有4条,路径越长转化率越低。

8.浏览量top100的商品浏览量呈阶梯分布,越靠前的阶梯之间的落差相对越大在这个阶梯中的商品越少,越靠后商品浏览量阶梯之间的落差相对越小,同阶梯内的商品越多。

9.浏览量TOP100的商品所属类目中,4756105,3607361,4357323三个类目浏览量远超其他类目。

10.从商品看:有17款商品转化率超过了1。

11.从类目看:这些商品所属类目分布均匀,除965809,4801426,2735466,2640118,5063620,4789432,2945933这7个类目之外,其他类目都只有一个商品在转化率TOP100的商品中。

根据以上诊断分析我们梳理出了以下假设,做假设验证。

       

 

假设1:这些商品中有高转化率的爆款商品

       

 

对比浏览量TOP5的商品,发现这些商品转化率在同一类目下并不高,假设不成立

 

假设2:4756105,3607361,4357323三个类目属于高频刚需类目

-创建类目购买频次表

       

-计算类目购买频次平均值

       

-查询4756105,3607361,4357323三个类目的购买频次       

4756105,3607361,4357323三个类目的用户购买频次明显高于平均值,假设成立

 

假设3:有部分用户是未点击商详直接从收藏和购物车购买的。

       

用户不是直接从收藏和购物车购买的,只是后续复购未点击商详,假设不成立

 

假设4:淘宝推荐的商品主要是“同一类目下的高转化商品”

       

用Excel对浏览量TOP100的商品ID和转化率TOP100的商品ID进行去重,结果无重复值,假设不成立


3.结论:

1)用户活跃:用户活跃曲线整体呈上升趋势,在一周中周六,周日活跃度比平时更高,在一天中用户活跃曲线从凌晨4点开始往上升,在中午12点和下午5~6点有两个小低谷(吃饭),到晚上9点时活跃度达到顶峰。

 

2)用户留存:从2017年11月15日致2017年12月3日的用户留存数据来看,淘宝的用户留存数据较好,活跃用户次日留存增长18.67%,当日的活跃用户留存也在快速增长,第七日留存比次日留存高18.56%。

 

3)用户转化:整体转化2.3%,用户从浏览到购买的路径主要有4条,路径越长转化率越低。

4)平台推荐与用户偏好:从数据集中的数据来看,排除用户兴趣偏好标签,淘宝给用户用户推送的商品主要是高频刚需的类目,促使用户复购,流量回流平台。

 

以上结论受数据量和数据类型的影响,并不一定准确,仅用来练习数据分析方法。

(考虑到阅读体验文章中只放了SQL截图,如需PDF版本,再公众号后台回复“用户行为分析”领取)

③ 数据分析人必掌握的数据库语言-SQL指南第五期

本篇文章继续围绕SQL的语法重点为大家介绍 子查询 的使用。



使用子查询进行过滤

在SQL中SELECT语句用于查询,之前所使用的所有SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句。然而SQL还可以创建子查询,即嵌套在其他查询中的查询。

示例:

数据表:本次使用的数据库表都是 关系表 。订单存储在两个表中,每个订单包含订单编号、客户ID、订单日期,在Orders表中存储为一行。各订单的物品存储在相关的OrderItems表中。Orders表不存储顾客信息,只存储顾客ID。顾客实际信息存储在Customers表中。

若现在需要检索出订购RGAN01的所有顾客,应怎样检索? 步骤如下:

检索包含物品RGAN01的所有订单的编号。

检索具有前一步骤列出的订单编号的所有顾客的ID。

检索前一步骤返回的所有顾客ID的顾客信息。

上述每个步骤都可 单独作为一个查询 来进行。

可将一条SELECT语句返回的结果用于另一条SELECT语句的WHERE子句,也可使用 子查询 来将3个查询组合成一条语句。

第一个语句含义明确,是对prod_id为RGAN01的所有订单物品检索其order_num列。

分析: 通过该语句知道了哪个订单包含要检索的物品。

下一步查询与上述语句检索出的订单20007和20008相关的顾客ID。此处可利用IN子句。

下面可结合上述两个查询,将第一个查询变为子查询。

分析:在SELECT语句中, 子查询总是从内向外处理 。在处理上述SELECT语句时,DBMS实际上执行了两个操作。

首先执行了 圆括号()内的查询 ,此查询返回两个订单号: 20007 20008 .

接着这两个值以IN操作符要求的逗号分隔的格式传递给外部查询的WHERE子句。 外部查询变为:

该语句检索的结果和前面硬编码WHERE子句返回的结果相同。

由上述语句得出订购物品RGAN01的所有顾客ID: 100004 100005 .下一步检索这些顾客ID的顾客信息。

也可将其中的WHERE子句转换为子查询,就不用硬编码这些顾客ID了。

分析: DBMS实际上必须执行三条SELECT语句才能完成上述语句。最里面的子查询返回订单号,此列用于外面的子查询的WHERE子句。外面的子查询返回顾客ID列,此顾客ID列用于最外层查询的WHERE子句。最外层查询返回最终所需的数据。

由此可见,在WHERE子句中使用子查询可编写出功能强大灵活的SQL语句。对于能嵌套的子查询的数目没有限制,不过在实际应用中由于 性能的限制 ,不宜嵌套太多子查询。

注意: 作为子查询的SELECT语句只能查询 单个列 ,检索多个列将返回错误。另外使用子查询并不总是执行该类数据检索的最有效方法。


作为计算字段使用子查询

使用子查询的另一方法是创建计算字段。

示例: 需要显示Customers表中每个顾客的订单总数。订单与相应的顾客ID都存储在Orders表中。要执行这个操作,需要以下步骤:

从Customers表中检索顾客列表。

对于检索出的每个顾客,统计其在Orders表中的订单数目。

这里我们可以应用之前介绍的 SELECT COUNT(*) 对表中的行进行计数,并通过一条WHERE子句来过滤某个特定的顾客ID,仅对该顾客的订单进行计数。

如下对顾客1000001的订单进行计数:

要对每个顾客执行COUNT(*)需要将其作为一个子查询,如下:

分析: 该SELECT语句对Customers表中的每个顾客返回三列:cust_name、cust_state和orders。orders是一个 计算字段 ,它由圆括号中的子查询建立。该子查询对检索出的每个顾客执行一次。此例中, 该子查询执行了5次 ,因为检索出了5个顾客。

子查询中的WHERE子句与之前使用的WHERE子句略有不同,因为它使用了 完全限定列名 ,而不只是列名(cust_id)。它指定表名和列名(Orders.cust_id和Customers.cust_id)。下面的WHERE子句告诉SQL,比较Orders表中的cust_id和当前正从Customers表中检索出的cust_id:

在有可能混淆列名时必须用一个 句点分隔表名和列名 。此例中,有两个cust_id列:一个在Customers中,另一个在Orders中。若不采用完全限定名,DBMS会认为要对Orders表中的cust_id自身进行比较。因为:

上述语句总返回Orders表中订单的总数,而该 结果不是我们想要的 ,如下:

由上可知,在构造语句时,若涉及到多个表,而不对同一列名加以区分则会引起DBMS抛出错误信息。

好的做法是,当在SELECT语句中操作多个表时, 使用完全限定列名来避免歧义

最后总结一下子查询的特点:

子查询必须括在圆括号中。

子查询的SELECT子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。

子查询不能使用ORDER BY,不过主查询可以。在子查询中,GROUP BY可以起到同ORDER BY相同的作用。

返回多行数据的子查询只能同多值操作符一起使用,比如IN操作符。

SELECT 列表中不能包含任何对BLOB、ARRAY、CLOB或者NCLOB类型值的引用。

子查询不能直接用在聚合函数中。

BETWEEN操作符不能同子查询一起使用,但是BETWEEN操作符可以用在子查询中。

以上便是本次介绍的全部内容,下篇文章将为大家讲解 连接 高级连接 的使用。

我们下期再见!