作者:lc蓝晨 | 来源:互联网 | 2023-06-14 17:20
文末扫码领取资料【某招聘网站数据表】本篇文章主要是通过两家超市真实的数据来展示SQL在实战中如何应用,感兴趣的小伙伴可以扫码领取学习资料进行实操练习。业务背景介绍项目
文末扫码领取资料
【某招聘网站数据表】
本篇文章主要是通过两家超市真实的数据来展示SQL在实战中如何应用,感兴趣的小伙伴可以扫码领取学习资料进行实操练习。
业务背景介绍
项目的实战背景是二家超市的真实数据,数据时间段是从 20160101 到 20171231。
主要表字段说明:
超市的主要商业场景:
1. 进来的商品销售给顾客,要让进来的商品顾客愿意购买。所以对于顾客不愿意购买的商品要及时进行淘汰、下架,或者退还供应商和打折销售掉。如果卖不掉,超市是不是就把进货成本都亏损了,例如:进了 20 件坚果,如果进货 20 元,都卖不掉也退不了货那超市就白白损失了:400 元!
2. 所有超市的经营者,定期都需要通过数行监控,不断看每天哪些商品有在卖?哪些商品没有在卖?在每个月的时候,一定会复盘,在过去一个月里面有多少商品有产生过销售,每件有哪几天在产生销售。
思考以下问题
需 求
销售数据统计指标:统计 2017 年 8 月,有多少商品销售的天数超过 1 天,2 天,3 天,……31 天的,查看商品的动销情况。
说明:
- 商品:即SKU,可以理解为一件商品,也就是我们表中的 GoodsID,暂时不考虑购买量以及购买金额。
- 销售的天数是指:某天这个商品在这天产生过订单
- 销率=有销售的 SKU 数/在销售的 SKU 数;例如:8 月 1 号,有过销售记录的 SKU 有 100 件,整个超市地 200 件商品在货架上可以卖,则这天的动销率为50%。
逻辑分析
代码实现过程
SELECT sale_days
,COUNT(DISTINCT GoodsID) AS goods_qty # 统计不同天数有销售商品数量
FROM(SELECT GoodsID
,COUNT(DISTINCT SDate) AS sale_days #统计每种商品各有多少在有销售
FROM OrderItem
WHERE SDate BETWEEN '20170801' AND '20170831'
GROUP BY GoodsID
ORDER BY sale_days) AS t
GROUP BY sale_days
ORDER BY sale_days DESC;
假设,我们想看下201708每天的动销率该如何查看呢?
逻辑分析:
所有商品,也就是GoodsID在Goods表中
总的在售商品数需要反复使用,所以使用定义变量
在OrderItem表按照日期分组统计不同商品数量,得到每日有销售记录的商品数量
汇总数据得到显示样式为:日期——有销售商品数量——动销率。
SELECT SDate
,sale_quantity AS 有销售的数量
,CONCAT(ROUND(sale_quantity/@total_quantity * 100,2),"%") AS '动销率'
FROM(SELECT SDate
,COUNT(DISTINCT GoodsID) AS sale_quantity
FROM OrderItem
WHERE SDate BETWEEN '20170801' AND '20170831'
GROUP BY SDate) AS t1
JOIN (SELECT @total_quantity := (SELECT COUNT(DISTINCT GoodsID)
FROM Goods)) AS t2;
201708每日动销率
后续其实可以做个折线趋势图,看下当月不同日期动销率的变化情况,如果有业务需要的话。这里主要是SQL的运用,不做过多分析。
End.
作者:对三选手
来源:简书
扫描海报上二维码添加客服
领取【某招聘网站数据表】
零基础入职数据分析就业班
课程的形式主要是“直播+录播”
报名专享:课程项目作业+1v1班主任监督学习+爱数据学院学员专属网站+班级答疑群
课程结束后能熟练掌握SQL、Python、Excel、PPT等工具
适合人群:
1.转行(岗位相关,专业相关、对数据分析感兴趣)
2.从事数据分析工作,但是需要提升技能以及增加实战经验
3.应届毕业生入职数据分析