TOP

数据分析 - sql 业务相关练习题

数据库

  

userinfo , orderinfo 表

两个 userId 彼此对应

题目

解题

不同月份的下单人数

用户在同一个月份会下多个单,这里进行去重

未支付的脏数据去除

统计用户三月份的回购率和复购率

复购率 - 一个月内重复购买的人数占比

先将所有 3月份购买超过一次的进行统计,然后在和全部数据比对

回购率 - 下个月又重复购买的人数占比

回购率可以使用计算出4月份购买的人数, 然后再用3月份的 in 判断是否再 4月份进行操作

这样操作较为繁琐人工,可以试图用更好用的方式

 使用连表之后判断延后一个月进行统计,

统计男女用户的消费频次是否有差异

第一步先把性别为空的脏数据清除

然后连表将订单和用户信息链接, 然后统计每一个用户分别是男女消费了多少订单

然后统合统计总量按照性别分组计算平均消费笔数, 可见男女差异不大

统计多次消费用户, 第一次和最后一次的间隔多少

 分组后的数据自然会有最大最小, 直接取出来然后时间插值计算即可,

可以再封装一次来计算平均频率等等操作分析

统计不同年龄段, 用户消费金额是否有差异

先去除部分脏数据,把年龄过筛一下, 默认值很多是按照 1901年计算, 从那个时间点往后卡

年龄的计算直接按照当前时间来减去即可

区分年龄段的方式可以使用 case when 或者直接这样除以然后配合 ceil 向上取整

计算出来年龄端相关的数据之后再统合按照年龄端分组进行分析

可以看出年龄对消费金额还是有影响的, 当然70岁以上的数据肯定还是有脏数据

统计消费28法则, 消费 top20%用户, 贡献多少额度

用比较讨巧的方法, 先算出总和的金额以及总和的人数

然后记住这两个数字 

之后使用 limit 提取出排序后的 前 20% 的人在计算总金额,

然后和之前算出来的所有人的总金额比对即可得出比例再 85%左右

ps

  mysql 里面是没有 row_number 这样的支持分组排名的函数的 , 因此只能这样较为麻烦的操作

 

posted @ 2019-10-24 15:37  羊驼之歌  阅读(808)  评论(0编辑  收藏  举报