基于MySQL的某电子产品销售分析

目录

一、字段处理

1. 字段说明

2. 增加新列

二、数据清洗-excel

1.查看数据缺失情况

2.查看重复值

3.查看数据是否有异常

(1)将几个id的格式转为文本类型

(2)查看年龄和价格是否存在异常值

(3)查看其他字段有无异常值

三、进行数据分析

1.总指标

(1)GMV

(2)每月的GMV

(3)客单价

2.用户行为分析

(1)用户总数量

(2)各地区用户数量

a 2020年人口普查数据

(3)年龄分布

(4)各年龄段的消费金额及下单数量

(5)男性女性的下单数量和销售金额

(6)分析购买了0元商品的用户

(7)二八定律-找出累计贡献销售额80%的那批用户

(8)客户消费金额的分位数

3.产品分析

(1)销量前十的产品

(2)销量少于10的商品

(3)销售额前十的商品

 (4)销量前十的产品类别 category_code

(5)对于手机,销量前五的品牌-brand

(6)分析销量前五的人群特征

a、samsung牌子

b、apple牌子

4.销售情况分析

(1)各省销量,销售额分析

(2)按日期分析销售额与销量的总体走势

(3)按月份对销量和销售额进行分析

a、对新老顾客销量跟销售额的分析

​编辑

​编辑

(4)按周分析

(5)按小时分析

(6)每月新增用户数:第一次购买的用户

(7)每月复购率

 (8)每月新客,老客复购率分析(老用户即新客第一个月购买,次月复购)

5.RFM模型

一、字段处理

1. 字段说明

 

2. 增加新列

新增时间、月份、小时、周几列。根据数据分列得到这几列数据,其中周日-周六为1-7。删除原日期列event_time。

 部分数据如上图所示。

二、数据清洗-excel

1.查看数据缺失情况

category_code、brand即类别和品牌列存在数据缺失的情况,对于category_code选择用R来代替缺失值而不是选择删除缺失值。brand缺失值数量较少,所以将缺失值直接删除。

2.查看重复值

order_id订单编号存在重复值,就是一个订单有包含多个商品。所以不删除重复值。

3.查看数据是否有异常

(1)将几个id的格式转为文本类型

直接通过数据-分列-选定文本格式,完成分列即可将数据转化为文本类型。

(2)查看年龄和价格是否存在异常值

通过查看,年龄列并无异常值,price和amount最小值为0,这类商品应该就是免费类的商品,所以也不属于异常值。应该进一步分析,购买了0元商品的用户,后续是否还有购买了其他的商品。

(3)查看其他字段有无异常值

通过观察,日期列中有1970年的数据,将这些异常值删除。

三、进行数据分析

1.总指标

(1)GMV

通过计算得到,总的GMV约为1.15亿元。

(2)每月的GMV

 

 通过每月GMV的折线图,可以清晰地知道从1月到四月趋于平缓,且每月GMV不到5000000元。从4月到4月快速上升,且在8月达到了最高点。8月到11月也在快速下降。

(3)客单价

得到客单价1240,订单均价296.

2.用户行为分析

(1)用户总数量

select count(distinct user_id) from `电子产品销售分析`

得到用户总数量为6906人。

(2)各地区用户数量

select local,count(distinct user_id) from `电子产品销售分析`
group by local

由上述图标可知广东的用户最多,其次是北京和上海,其余城市基本都在500左右。

a 2020年人口普查数据

通过2020年人口普查数据,计算各个城市的人口占比,可以据此进行拉新。截取部分数据如下表所示:

地区人口数2020年人口比重2010年人口比重
全国1411778724100100
广东1260125108.937.79
山东1015274537.197.15
河南993655197.047.02
江苏8474801665.87

将各城市人口数匹配到各城市用户数中,具体如下:

由上图可得,广东的人口数最多,其次是江苏、四川、浙江、湖南,且广东的用户数也最多,所以在广东进行拉新活动的性价比是最高的。

(2)用户性别的分布

select sex,count(user_id) from 
(select user_id,sex from  `电子产品销售分析`
group by user_id) a
group by sex

 

 男女各占一半。

(3)年龄分布

select age,count(user_id) from 
(select user_id,age from  `电子产品销售分析`
group by user_id) a
group by age

 其中,最小年龄为16,最大年龄为50。将年龄段分成7等份,步长为5,可分为(15,20]岁、(20,25]岁、(25,30]岁、(30,35]岁、(35,40]岁、(40,45]岁、(45,50]岁。

 

 由上述结果可知,(15,20]岁年龄段用户数量最少,(20,25]岁年龄段用户数量最多,其他都相对比较平均,在1000左右。

(4)各年龄段的消费金额及下单数量

select age,count(order_id),sum(price) from 
(select order_id,age,sum(price) price
from `电子产品销售分析`
group by order_id) aa
group by age

 

 由上述结果可知,销售数量越多,销售金额就越多。其中(15,20]岁最高。

(5)男性女性的下单数量和销售金额

select sex,count(order_id),round(sum(price),2) from 
(select order_id,sex,sum(price) price
from `电子产品销售分析`
group by order_id) aa
group by sex

发现男性女性的消费金额与下单次数均比较平均。

(6)分析购买了0元商品的用户

select user_id,sum(price)
from `电子产品销售分析`
where user_id in 
(select distinct user_id
from `电子产品销售分析`
where price = 0)
group by user_id

从产品类别可知29个购买0元商品的用户,0元商品是中奖得到的,并且中奖的用户只有一个用户没有下过单。而且这29个用户的客单价高达34832元(总的客单价为1240元)。

(7)二八定律-找出累计贡献销售额80%的那批用户

 

 数据太多,就不一一列举了。由上表计算可知前27%的顾客占了80%的销售额,所以要维护好这27%的用户。

(8)客户消费金额的分位数

 用户平均消费金额大于75%分位数,即存在着高消费的客户。

3.产品分析

(1)销量前十的产品

select product_id,count(1) aaa
from `电子产品销售分析`
group  by product_id
order by count(1) desc
limit 10

 对于热销产品,应该时刻关注他们的库存量,避免发生缺货情况.。

(2)销量少于10的商品

select product_id,count(1) aaa
from `电子产品销售分析`
group  by product_id
having count(1) < 10

共有2003个产品销量低于10,上述数据仅截取部分数据。对于销量低于10的产品,可以考虑促销进行清仓处理。

(3)销售额前十的商品

select product_id,round(sum(price),2) price1
from `电子产品销售分析`
group  by product_id
order by sum(price) desc
limit 10

销售额并不代表利润,而是要结合成本来看。

 (4)销量前十的产品类别 category_code

select category_code,count(1) aaa
from `电子产品销售分析`
group by category_code
order by count(1) desc
limit 10

 除去异常填充的类别,最受欢迎的智能手机和笔记本电脑,且智能手机销量是笔记本电脑的4倍。

(5)对于手机,销量前五的品牌-brand

select brand,count(1) aaa
from `电子产品销售分析`
where category_code = 'electronics.smartphone'
group by brand
order by count(1) desc
limit 5

销售数量最高的牌子是samsung,其次是apple,其中samsung销量占了一半,apple销量占了四分之一。

(6)分析销量前五的人群特征

a、samsung牌子

年龄分布

SELECT case when age <= 20 then '(15,20]岁'
            when age <= 25 then '(20,25]岁'
						when age <= 30 then '(25,30]岁'
						when age <= 35 then '(30,35]岁'
						when age <= 40 then '(35,40]岁'
						when age <= 45 then '(40,45]岁'
						else '(45,50]岁'
						end age1
						,count(1) FROM `电子产品销售分析` 
where brand = 'samsung'
group by age1

 性别分布

SELECT sex,count(1) FROM `电子产品销售分析` 
where brand = 'samsung'
group by sex

地域分布

SELECT local,count(1) FROM `电子产品销售分析` 
where brand = 'samsung'
group by local

由上述结果可知,年龄分布比较平均,性别分布也比较平均,地域分布占比最多的是广东、北京、上海。

b、apple牌子

年龄分布

SELECT case when age <= 20 then '(15,20]岁'
            when age <= 25 then '(20,25]岁'
						when age <= 30 then '(25,30]岁'
						when age <= 35 then '(30,35]岁'
						when age <= 40 then '(35,40]岁'
						when age <= 45 then '(40,45]岁'
						else '(45,50]岁'
						end age1
						,count(1) FROM `电子产品销售分析` 
where brand = 'apple'
group by age1

性别分布

SELECT sex,count(1) FROM `电子产品销售分析` 
where brand = 'apple'
group by sex

 

地域分布

SELECT local,count(1) FROM `电子产品销售分析` 
where brand = 'apple'
group by local

 人群特征基本跟Samsung一致。

4.销售情况分析

(1)各省销量,销售额分析

SELECT local,count(1),round(sum(price),2) FROM `电子产品销售分析` 
group by local

 

 由上述结果可知,广东的销量和销售额都是最高的,其次是上海和北京。

(2)按日期分析销售额与销量的总体走势

select date(date),sum(price),count(1)
from `电子产品销售分析` 
group by date(date)

部分结果如下所示:

 

 

从数据显示,618和双11当天,销量和销售额并没有很高,反而很低。

假如数据真实,那么618和双11搞的活动效果是非常差的,要进行复盘。

(3)按月份对销量和销售额进行分析

select month,round(sum(price),2),count(1)
from `电子产品销售分析` 
group by month

 由上述结果可知,销售额1-8月呈上升趋势,8-11月销售额在呈下降趋势。

销量和销售额基本上一致。

a、对新老顾客销量跟销售额的分析

计算每月新客的销售额和销量

SELECT month,round(sum(price),2),count(1) from 
(select case when month = month_min then '新客户' else '老客户' end aa,month,price
from `电子产品销售分析` a join 
(select user_id,min(month) month_min
from `电子产品销售分析` 
group by user_id) b on a.user_id = b.user_id) d
where aa = '新客户'  
GROUP BY month

 计算老顾客的销量和销售额

SELECT month,round(sum(price),2),count(1) from 
(select case when month = month_min then '新客户' else '老客户' end aa,month,price
from `电子产品销售分析` a join 
(select user_id,min(month) month_min
from `电子产品销售分析` 
group by user_id) b on a.user_id = b.user_id) d
where aa = '老客户'
GROUP BY month

 b、新老用户销售额对比

 除了11月份,老用户的销售额都是比新用户的高,说明客户留存不错,老顾客回购多。

c、新老客户销售额对比分析

 情况跟销售额一致。

(4)按周分析

select weekday,round(sum(price),2),count(1)
from `电子产品销售分析` 
group by weekday

 周日-周六为1-7。

由上述结果可知,周六日的销售量和销量都比平常的要高,客户比较喜欢在周末购物,可以在周末推送商品给顾客,也可以适当选一两件商品进行清仓。

(5)按小时分析

select hour,round(sum(price),2),count(1)
from `电子产品销售分析` 
group by hour

 

 

 销量和销售额在凌晨一点就开始上升,升到9点就达到了峰值。

用户喜欢在6-12点下单,可以在此时间段推送商品。

(6)每月新增用户数:第一次购买的用户

select aa.month1,aa.a,bb.b,(a-b)/b from 
(select month1,count(1) a from 
(select user_id,min(month) month1
from `电子产品销售分析` 
group by user_id) d
group by month1) aa
left join (select month1,count(1) b from 
(select user_id,min(month) month1
from `电子产品销售分析` 
group by user_id) d
group by month1) bb
on aa.month1 = bb.month1 + 1

2月比1月的下降了将近一倍,5月比4月增长了2两倍,而10比9月增长了将近134倍(如果不是数据错误),说明拉新活动效果显著,可以多搞几次这样的拉新活动。

(7)每月复购率

每月复购率 = 每月购买两次以上的用户 / 总购买次数

select bb.month, bb.复购人数,cc.总购买人数,复购人数/总购买人数 '复购率'from (select month,count(user_id) '复购人数' from
		(select month,user_id,count(distinct order_id) a
		from `电子产品销售分析`
		group by month,user_id) aa
where a >= 2
group by month) bb 
left join 
(select month,count(distinct user_id) '总购买人数' from `电子产品销售分析` group by month) cc 
on bb.month = cc.month

 

 (8)每月新客,老客复购率分析(老用户即新客第一个月购买,次月复购)

每月的复购人数:

新用户复购数

select month,count(user_id) from 
(SELECT month,user_id,count(distinct order_id) '复购次数' from 
		(select case when month = month_min then '新客户' else '老客户'    end aa,month,a.user_id,a.order_id
		from `电子产品销售分析` a join 
				(select user_id,min(month) month_min
				from `电子产品销售分析` 
				group by user_id) b 
		on a.user_id = b.user_id) d
where aa = '新客户'
GROUP BY month,user_id) aaaa
where 复购次数 >= 2
group by month 

 

老用户复购人数:

select month,count(user_id) from 
(SELECT month,user_id,count(distinct order_id) '复购次数' from 
		(select case when month = month_min then '新客户' else '老客户'    end aa,month,a.user_id,a.order_id
		from `电子产品销售分析` a join 
				(select user_id,min(month) month_min
				from `电子产品销售分析` 
				group by user_id) b 
		on a.user_id = b.user_id) d
where aa = '老客户'
GROUP BY month,user_id) aaaa
where 复购次数 >= 2
group by month 

 

 

 

 除了10月是新客户复购率高,其余月份都是老用户复购率高。

5.RFM模型

R:最近一次消费(Recency):

当前时间—最近一次购买的日期(当前时间选取文件中的最新日期:2020-11-21)

F:消费频率(Frequency)

M:消费金额(Monetary)

注:同一个用户一天内购买多次视为一次

select user_id,max(date(date)) date,round(sum(price),2) '销售金额'
from `电子产品销售分析`
group by user_id

select user_id,max(date(date)) date,round(sum(price),2) 'M',COUNT(distinct order_id) 'F'
from `电子产品销售分析`
group by user_id

 

select user_id,DATEDIFF('2020-11-21',max(date(date))) 'R',round(sum(price),2) 'M',COUNT(distinct date(date)) 'F'
from `电子产品销售分析` 
group by user_id

 

 R的打分:

[0-20]:5分

(20-40]:4分

(40-60]:3分

(60-80]:2分

80以上:1分

F的打分:

[0-5]:1分

(5-10]:2分

(10-15]:3分

(15-20]:4分

20以上:5分

M的打分:

[0-1000]:1分

(1000-5000]:2分

(5000-10000]:3分

(10000-15000]:4分

15000以上:5分

select user_id,case when R <= 20 then 5 when R <= 40 then 4 when R <= 60 then 3 when R <= 80 then 2 else 1 end 'R',case when F <= 10 then 1 when F <= 20 then 2 when F <= 30 then 3 when F <= 40 then 4 else 5 end 'F',case when M <= 1000 then 1 when M <= 3000 then 2 when M <= 9000 then 3 when M <= 15000 then 4 else 5 end 'M'
from 
(select user_id,DATEDIFF('2020-11-21',max(date(date))) 'R',round(sum(price),2) 'M',COUNT(distinct order_id) 'F'
from `电子产品销售分析` 
group by user_id) aa

 

select user_id,if(R>3.8,1,0) 'R',if(F>3.6,1,0) 'F',if(M>3.5,1,0) 'M',concat(if(R>3.8,1,0),if(F>3.6,1,0),if(M>3.5,1,0)) result from 
(select user_id,case when R <= 20 then 5 when R <= 40 then 4 when R <= 60 then 3 when R <= 80 then 2 else 1 end 'R',case when F <= 5 then 1 when F <= 10 then 2 when F <= 15 then 3 when F <= 20 then 4 else 5 end 'F',case when M <= 1000 then 1 when M <= 3000 then 2 when M <= 9000 then 3 when M <= 15000 then 4 else 5 end 'M'
from 
(select user_id,DATEDIFF('2020-11-21',max(date(date))) 'R',round(sum(price),2) 'M',COUNT(distinct date(date)) 'F'
from `电子产品销售分析` 
group by user_id) aa) bb  
group by user_id

select case when result = 111 then '重要价值客户' when result = 101 then '重要发展客户' when result = 011 then '重要保持客户' when result = 001 then '重要挽留客户' when result = 110 then '一般价值客户' when result = 100 then '一般发展客户'  when result = 010 then '一般保持客户' else '一般挽留客户' end '客户类型',COUNT(1) from 
(select user_id,if(R>3.8,1,0) 'R',if(F>3.6,1,0) 'F',if(M>3.5,1,0) 'M',concat(if(R>3.8,1,0),if(F>3.6,1,0),if(M>3.5,1,0)) result from 
(select user_id,case when R <= 20 then 5 when R <= 40 then 4 when R <= 60 then 3 when R <= 80 then 2 else 1 end 'R',case when F <= 5 then 1 when F <= 10 then 2 when F <= 15 then 3 when F <= 20 then 4 else 5 end 'F',case when M <= 1000 then 1 when M <= 3000 then 2 when M <= 9000 then 3 when M <= 15000 then 4 else 5 end 'M'
from 
(select user_id,DATEDIFF('2020-11-21',max(date(date))) 'R',round(sum(price),2) 'M',COUNT(distinct date(date)) 'F'
from `电子产品销售分析` 
group by user_id) aa) bb  
group by user_id) cc
group by 客户类型

 

 

 重要客户人数为3478。

其中重要价值客户人数为2481,约占重要顾客的70%,对于重要价值顾客,要给予他们VIP的服务,同时也要留意他们的购买反馈。

重要发展顾客人数为438,约占重要顾客的12.6%,这类顾客的购买次数不是很高,要提高他们的购买率,可以通过发放优惠券等方式。

重要保持客户的人数为370,约占重要顾客的10.6%,这类顾客的最近一次购买时间相隔太久,应该推一些商品信息或者打电话给他们,也可以通过发放优惠券的方式来提高他们的复购率。

重要挽留顾客的人数为189,约占重要顾客的5.4%,对于这类顾客,我们要想办法挽回他们,可以通过发信息,推送优惠券等方式。

一般客户人数为3428。

对于一般价值,一般发展,一般保持的顾客,在维护好重要顾客的情况下,可以利用一些资源维护这批顾客。但是对于一般挽留的顾客,人数高达1503人,这批顾客注定要流失的,在没有资源的情况下,我们需要放弃这批顾客。


版权声明:本文为SelenaSelena原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。