以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

短视频大数据分析平台 短视频平台的特点分析

  

     

  

  【题目】   

  

  “用户运营记录表”记录了某短视频平台用户的日点击访问量,帮助公司内部分析师了解用户对当前页面的点击偏好。   

  

  表格字段包括:用户名、操作记录、操作时间。   

  

     

  

  表中每个字段的含义如下。   

  

  用户名:表示用户在短视频平台注册的唯一用户名。   

  

  操作:表示用户在短视频平台上点击的按钮名称。a表示用户点击“短视频”播放入口,b表示用户点击“长视频”播放入口。   

  

  操作时间:表示用户点击的时间,精确到秒。   

  

  现在,操作员找到了作为数据分析师的您,并希望您帮我看一下用SQL获取两个数据,如下所示:   

  

  1.分析每天的访客数和他们的平均操作次数   

  

  2.统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻.   

  

  比如2020年1月2日,小明先点击了短视频入口(操作ID为A),再点击了长视频入口(操作ID为B),所以小明在那天属于我们的目标用户。(如下图黄色字段所示)   

  

     

  

  1.分析每天的访客数和他们的平均操作次数   

  

  如果短视频平台在2020年1月2日正式上线,第一天只有小明和小红会浏览短视频平台。   

  

  小明对短视频和长视频都很感兴趣,早上9: 00点击A键进入短视频界面观看。然后下午3点,小明点了B键,进入长视频频道观看。晚上,小明觉得自己又想看短视频了。晚上7点40分,他再次点击A键观看短视频。   

  

  小红是个重度短视频爱好者。当天下午2点,小红第一时间点击A键进入短视频界面,感觉内容不错。于是下午6点,小红再次点击了A键,开心地看起了短视频。   

  

     

  

  那么,如何统计当天的访客数量和平均操作次数呢?   

  

  短视频平台上线的第一天,也就是2020年1月2日,我们很容易就能看到当天的访问量和平均操作次数:当天的访问量是2(小明和小红),当天的平均操作次数是2.5(当天有5次点击和2次操作,所以5除以2得到2.5)。   

  

  但是随着短视频平台数量的增加,如果允许分析师每天手动统计,那么工作量可想而知。有什么方法可以帮助我们快速统计每天的访客数量和平均操作次数?   

  

  如果你想知道每天的访客数和平均操作数,遇到这种“每”的问题,应该想到《猴子 从零学会SQL》中提到的“分组汇总”。   

  

  按日期分组(分组   

  

  按日期)、汇总(计数用户名用于人数,计数操作时间用于操作数)。这里,因为表中表示日期的字段“操作时间”精确到分和秒,所以需要使用日期函数将操作时间转换为日期形式。具体形式如下:   

  

     

  

  你可能有一个问题。由于group by代表分组,所以我可以在最后直接添加group by分组命令,但是为什么要在开头选择呢?   

  

  以后,还需要添加分组标准日期(操作时间)吗?   

  

  这就涉及到聚合函数的另一个特性,“端到端回声”。你可以简单地理解为选择之后是最后呈现在餐桌上的美味食物,而分组。   

  

  背后的内容是厨房幕后烹饪的食品加工过程。   

  

  理解后,将特定代码字段替换如下:   

  

     

  

  这里有两点需要注意。一是需要减轻体重,cou。   

nt(distinct 用户名)其中的distinct就是去重的意思。

  

比如小明在2020-02-01早上点了一次,下午点了一次,晚上点了一次,那么小明其实在表里面当天是有三条记录的,但是人头数的话,小明当天只贡献了一个人头数,所以这里需要去重。

  

其二是日期需要改为date形式,date函数可以帮我们将长时间段变为简介的年-月-日的日期形式。

  

2.统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻

  

其实这个是在日常工作中业务经常要用到的SQL取数场景。例如,某电商公司主管在做针对功能优化的决策,主管非常想知道,咱们的用户在点击“下单”按钮后,都流向到哪里去了?

  

这时候数据分析师小甲淡定的汇报到:主管,咱们用户呀,在点击“下单”按钮后,有80%的用户立马点击了“领优惠券”按钮,有15%的用户立马点击了“评价”按钮,有5%的用户立马点击了“随便看看”按钮。

  

主管一听,便立马就知道了用户的点击行为偏好。

  

其实这里,数据分析师小甲用了SQL中的lead()窗口函数,实现了这种“相邻”操作的数据统计。

  

  

如上图可知,用户(花花)的行为路径是,先下单,其后他领取了优惠券,领完优惠券之后再去评价。而小白则是下单后直接就去评价了。

  

数据分析师小甲先以用户进行分组,找出用户当前操作以及最近一次操作的行为,而后进行统计记人头数,从而给了主管一个非常满意的答案。

  

lead窗口函数大致结构如下:

  

  

lead()函数的模板如上,基本上只要改变ABC三个方格里面的值,就可以实现任何相邻元素之间的取数。具体表达含义如下:

  

lead()表示找出XXX的下一次相邻行为。

  

partition表示分组

  

order by表示排序;

  

比如说,想找出每天用户相邻两次的点击。

  

按照什么分组呢?按照用户分组,所以partition by后面填上用户id。

  

那如何区别每个用户各个行为的先后顺序呢?按照每个用户点击的时间来区分,所以order by后面填入操作时间。

  

那最后,我们究竟想看的行为是什么呢?操作记录(比如上述提到的优惠券行为、评价行为等)。

  

思路整理完后,SQL如下:

  

  

回过头来继续看当前的这个案例。

  

假如短视频平台2020年1月2号正式上线,第一天,只有小明和小红两个人浏览短视频平台。

  

其中小明对短视频和长视频都感兴趣,上午九点点了A按钮进入短视频界面观看。其后下午3点钟,小明点了B按钮,进入长视频频道观看。

  

晚上时候,小明觉着还想再看看短视频,就在晚上7点40时候,又点击了A按钮去观看短视频。

  

小红则是重度短视频爱好者,当天下午2点小红第一次点击A按钮进入短视频界面,觉着内容不错,于是晚上6点时候,又点击了A按钮,又开心的看短视频。

  

  

这里找出A操作后,立马是B操作后的用户数,具体思路如下。

  

首先按照用户名进行分组,其次按照每个用户名下用户的点击时间进行排序,最后以操作记录作为我们想要定位的行为。

  

如下,黄色部分表示,当小明点击A按钮观看短视频后,其后下一次最近的行为是点击B按钮观看了长视频。白色部分表示,当小明点击B按钮观看长视频后,其后下一次最近的行为是又在晚上时候点击A按钮观看了短视频。

  

  

红色部分则代表了小红的行为路径,小红最初是点击A按钮观看短视频,其后又再次点击了A按钮观看了短视频。

  

从而可以写出第一条SQL语句:

  

  

填空完成后,再在外边嵌套条件:

  

  

最终SQL如下:

  

  

查询结果:

  

  

【举一反三】

  

某APP的播放记录表如下(用户操作记录表),记录了每个用户进入(Enter)、离开(Leave)某App的时间。

  

计算2019年4月19日这天,每个用户的次均停留时间,即每个用户相邻leave时刻-enter 时刻的均值。

  

  

思路:当看到求同一用户相邻状态时候,需要马上想到利用lead函数来求,如下:

  

  

查询结果:

  

  

【本题考点】

  

1.考查对分组汇总的应用,以及灵活使用来解决业务问题

  

2.当遇到相邻问题时,要想到用窗口函数lead来解决

  

3.考察遇到复杂问题,如何用逻辑树分析方法来拆解解决成简单问题

  

  

推荐:从零学会SQL?