【面试题】某公司数据库里有3张表,销售订单表、产品明细表、销售网点表

”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价

销售订单表和产品明细表通过“产品”字段关联,销售订单表和销售网点通过“交易网点”关联

【问题】分析品牌在2019.5-2020.4期间的复购率

【解题思路】

1.明确业务指标

要分析的是“在2019.5-2020.4期间的复购率”,复购率是业务分析中经常用到的指标。

复购率是衡量产品受欢迎度的指标。复购率高,说明产品的忠诚用户越多,这时公司需要把更多的精力和资源投入到吸引、引导在用户的复购上。

复购率低说明产品的忠诚用户少,需要把资源和精力用在提升用户的转化率上。

复购率 =一定时间内购买次数大于1次的人数/所有购买的用户数

举个例子,3月份购买产品的100个人中有30个人购买了2次。3月份的总的复购人数为30人,复购率=一定时间内购买次数大于1次的人数(30)/所有购买的用户数(100)=30%

2.如何判断是否是复购呢?

不同的行业有不同的标准,一般是指发货了再购买的才算复购,同一天购买的不算是复购。

也就是日期不同的,再次购买的用户算是复购。

在“销售订单表”中,需要先用if函数判断用户(顾客ID字段)购买次数,大于1的为复购,标记为1,否则标记为0


if(count(distinct (a.顾客ID))>1,1,0)

然后再用汇总函数(count)计数


count(distinct(a.顾客ID))

这样,复购率 =一定时间内购买次数大于1次的人数/所有购买的用户数


if(count(distinct (a.顾客ID))>1,1,0)/count(distinct(a.顾客ID)) as 复购率

3.不同日期的复购

一般按不同日期的购买为复购,需要把“销售订单表”复制为2个表,用不同的日期取交集,取出不同日期购买的顾客/次数,如下图


from 销售订单表 as a
inner join  销售订单表 as b
on a.交易日期!=b.交易日期

把前面步骤里的SQL组合到一起,最终得到分析复购率的SQL:


select if(count(distinct (a.顾客ID))>1,1,0)/count(distinct(a.顾客ID)) as 复购率
from 销售订单表 as a
inner join  销售订单表 as b
on a.交易日期!=b.交易日期
and a.交易日期 between "2019-05-01" and "2020-04-30";

得到复购率=0.2=20%

【本题考点】

1.此题重点查看对业务的理解,必须先清楚业务的指标的含义。常用的指标可以回顾《衡量业务:指标体系》

2.考察if判断函数的应用

3.内联结inner join的应用

注释:复购率也就是一段时间内购买次数大于1的情况,前提是不在同一天,所以需要排除时间相同的情况,也就是用到了表的内连接

SQL分析品牌在2019.5-2020.4期间的复购率(复购率理解、inner join)相关推荐

  1. 记录一下2019年-2020年期间的学习、工作经历

    记录一下2019年-2020年期间的学习.工作经历 2019年,我正在学PHP,那时的我怀着对各种编程知识的好奇心,认为编程界这么多种语言,只要学好一门,以后想转其他的语言应该都不难.于是我就开始疯了 ...

  2. 黑莓桌面管理器4.2_虚拟桌面管理器行业现状调研分析及发展趋势预测报告(2020)...

    QYResearch预测:2020-2026全球与中国虚拟桌面管理器市场现状及未来发展趋势 [纸版价格]:RMB 18000 [电子版(PDF)价格]:RMB 18000 [报告篇幅]:101 [报告 ...

  3. 西邮linux兴趣小组2019,2020补纳面试题

    西邮linux兴趣小组2019,2020补纳面试题 2019补纳 2020补纳 C语言基础 数据结构与算法 GNU Linux常识 关于纳新试题,您需要了解: 本题仅作为面试有限参考 为了代码的简洁, ...

  4. SQL分析检查工具Soar 和 Soar-web的安装

    SQL分析检查工具Soar 和 Soar-web的安装 背景        最近开发需要写一些复杂的Sql脚本,但是依赖Explain工具分析SQl还是有很麻烦,于是乎就找到了这个小米开源的SQL分析 ...

  5. MySQL优化篇:show profile进行SQL分析

    文章目录 1.SQL分析.调优和排查的大体流程 2.show profile是什么 3.show profile分析步骤 (1)是否支持,看看当前的MySQL版本是否支持 (2)开启功能,默认是关闭, ...

  6. 25、sql分析命令explain和desc

    explain和desc命令的效果相同,命令格式如下: mysql> explain SELECT s.id sid, s.name sname , t.id tid ,t.name tname ...

  7. 面试中的SQL分析二

    1,面试题范例一 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 ...

  8. 2019一键清空朋友圈_新整理再见2019你好2020朋友圈励志说说

    再见 2019 你好 2020 朋友圈励志说说 1. 这是告别的季节, 2019 的烦恼全部抛光 ; 这是蜕变的时刻, 2019 的辛劳不会白忙 ! 值此 2020 年来临之际,特预祝您万事顺 意,新 ...

  9. 如何用一张影像动图来对比成都市2019年和2020年油菜花分布状态?

    春分至,燕子飞时,绿水人家绕.春雷细雨,万物皆醒,华夏大地处处生机盎然.此时的川蜀大地上油菜花盛开,鲜嫩欲滴的柔黄和生机勃勃的嫩绿相映交错,这样的美景尽收眼睑. 四川,仿佛上天遗留在人间的仙境,让人叹 ...

最新文章

  1. [LeetCode] [C++] 第一轮刷题总结(持续更新~~~)
  2. insert时调用本身字段_「技术篇」ETL工具Kettle数据对比同步以及Java程序中调用
  3. p7zip的解压和压缩
  4. 数据结构0类模板的使用
  5. 如何保证 HBase 服务的高可用?看看这份 HBase 可用性分析与高可用实践吧!
  6. 数据卡片_手把手教你构建企业实时数据大屏
  7. web中ajax实现二级联动,Ajax实现城市二级联动(一)
  8. 获取文件夹中所有文件的文件名[重复]
  9. java apns ssl错误_无法使用Javapns/Javaapns SSL握手失败发送推送通知
  10. 什么是信用评分分析?
  11. jQuery文档处理程序
  12. 超市商品管理系统(C++)
  13. 视频教程-Python数据结构与算法视频教程-Python
  14. 江阴:智慧融入城市血液,打造创新发展新名片
  15. QQ客户端管理聊天记录漫游功能 | 解决经常弹窗消息漫游安全验证,QQ服务独立密码的问题
  16. 2d游戏中角色动画解决方案
  17. mysql运行语句时出现 FUNCTION *** does not exist
  18. REW声学测试(二):离线测试
  19. 验证身份证号码是否合法
  20. 首次不依赖生成模型,一句话让AI修图!

热门文章

  1. MAC打开CSV中文乱码
  2. [tf]sess.run机制
  3. 分布式之Docker
  4. 项目名称出现红叉或感叹号:是导进去Tomcat版本不一致导致的,需修改四处
  5. python学习笔记3-函数浅析
  6. 伺服电机速度环、位置环、扭矩环的控制原理
  7. 为什么Qt会有 QT_BEGIN_NAMESPACE宏
  8. HTML语言写邮件,使用HTML编写简单的邮件模版
  9. word中在页脚设置第几页,共几页
  10. CMD指令 javac不是内部指令