MySQL实战--用户行为数据分析--8小时跟做(1)

【MySQL实战】基于100万真实电商用户的1亿条行为数据分析跟做

简介_哔哩哔哩_bilibili

SQL基础语法:select+from +where+group by+having+order by+limit

1.navicat导入数据到mysql.

因为一亿条数据太多了,所以选取一百万条直接用navicat导入,当然跟着作者用kettle导入也可以。

查询--建表

create table user_behavior (user_id int(9), item_id int(9), category_id int(9), behavior_type varchar(5), timestamp int(14) );

导入数据:

2.数据预处理

查空,查重

-- 检查空值 
select * from user_behavior 
where user_id is null OR item_id is null OR category_id is null or behavior_type is null OR timestamps is null;
-- 检查重复值 
select user_id,item_id,timestamps from user_behavior
group by user_id,item_id,timestamps
having count(*)>1;

Group by +非聚合字段

Having +聚合字段筛选条件(having 筛选大于1的相同组合)

发现前一百万条数据无重复,所以不用去重

新增日期

-- 新增日期:date time hour

-- datetime
alter table user_behavior add datetimes TIMESTAMP(0);
update user_behavior set datetimes=FROM_UNIXTIME(timestamps);
select * from user_behavior limit 5;
-- date
alter table user_behavior add dates char(10);
alter table user_behavior add times char(8);
alter table user_behavior add hours char(2);
-- update user_behavior set dates=substring(datetimes,1,10),times=substring(datetimes,12,8),hours=substring(datetimes,12,2);
update user_behavior set dates=substring(datetimes,1,10);
update user_behavior set times=substring(datetimes,12,8);
update user_behavior set hours=substring(datetimes,12,2);
select * from user_behavior limit 5;

update user_behavior set datetimes=FROM_UNIXTIME(timestamps);

将时间戳转化成日期形式,并存储在datetimes列中

去异常

-- 去异常 
select max(datetimes),min(datetimes) from user_behavior;
delete from user_behavior
where datetimes < '2017-11-25 00:00:00'
or datetimes > '2017-12-03 23:59:59';

最后可以查看一下数据,这里count(1) 和 count(*) 的结果是相同的

-- 数据概览 
desc user_behavior;
select * from user_behavior limit 5;
SELECT count(1) from user_behavior; -- 999529条记录

3.获客情况

选取十万数据分析

-- 创建临时表 
create table temp_behavior like user_behavior;

-- 截取 十万数据
insert into temp_behavior
select * from user_behavior limit 100000;

 

PV(总访问量)

根据日期分组(日浏览量,即每天的总访问量)

UV(总用户数)

根据日期分组(每天的独立访客)

-- 一条语句 
select dates
,count(*) 'pv'
,count(distinct user_id) 'uv'
,round(count(*)/count(distinct user_id),1) 'pv/uv'
from temp_behavior
where behavior_type='pv'
GROUP BY dates;

round((),1)保留以为小数

4.留存情况

5 时间序列分析

6 用户转化率

7 行为路径分析

8 RFM模型

9 商品按热度分类

10 商品转化率分析

11 商品特征分析

12 数据可视化

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值