当前位置:网站首页>如何分析粉丝兴趣?
如何分析粉丝兴趣?
2022-07-06 19:27:00 【猴子数据分析】
【题目】
有一张“粉丝关注表”,包含3个字段:用户id、关注媒体id、日期。
【问题】“粉丝关注表”中存在一个用户同时关注多个媒体的情况存在,比如:用户id为A001的用户,对应关注媒体id数据为1010,1020,1031。为了便于后期分析粉丝兴趣,请将该表中的这种情况进行拆分为多条。
比如对于用户A001,其转换如下:
【解题思路】
这类问题称为“列转行”,在MySQL里的处理方式一般分为三步:
1)创建一个“序列表”;
2)进行多表联结,将原表的每一条数据复制为多条;
3)使用substring_index函数获取最终结果。
第一步:创建序列表
“序列表”是指只有一个字段,存储的是数字序列,比如:
其中,“序列”的最大值就是该问题中一个用户关注媒体的最多个数。
select max(length(关注媒体id) - length(replace(关注媒体id,',','')) + 1) as 最多关注媒体个数
from 粉丝关注表;
返回结果为:
那我们需要新建的“序列表”就是:
第二步:多表联结
使用多表联结,可以通过“序列表”将“粉丝关注表”的每行变成多行。
此处有两个注意点:
1)为保证原表中的每一条数据不丢失,选择“左联结”,并以原表为左表;
2)联结条件里对复制条数进行限制,限制条件是用户关注媒体的数量,即“关注媒体id”字段下的逗号数量加1。
select t1.用户id,
t1.关注媒体id,
t1.日期,
t2.序列
from 粉丝关注表 t1
left join 序列表 t2 on t2.序列 <= (length(关注媒体id) - length(replace(关注媒体id,',','')) + 1);
返回结果为:
第三步:使用函数获取结果
接下来就是将媒体id截取出来,需要用到字符串截取函数:SUBSTRING_INDEX。
SUBSTRING_INDEX(字符串,分隔符,参数)
其中,分隔符指本题中分割媒体id的“,”;2指按分隔符分开,从左往右截取几个媒体id;如果参数为负数时,表示从右往左截取几个媒体id。
select t1.用户id,
substring_index(substring_index(t1.关注媒体id,',',t2.序列),',',-1) as 关注媒体id,
t1.日期
from 粉丝关注表 t1
left join 序列表 t2 on t2.序列 <= (length(关注媒体id) - length(replace(关注媒体id,',','')) + 1);
返回结果为:
【本题考点】
1)考查对序列表的了解;
2)考查对字符串截取函数SUBSTRING_INDEX的了解;
3)考查对多表联结的了解。
▼ 点击「阅读原文」
▼ 解锁更多数据分析课程
边栏推荐
- CSDN 夏令营课程 项目分析
- Django数据库(SQlite)基本入门使用教程
- MySQL
- Redis introduction complete tutorial: replication principle
- MySQL - common functions - string functions
- 左程云 递归+动态规划
- dotConnect for DB2数据提供者
- 普通测试年薪15w,测试开发年薪30w+,二者差距在哪?
- Data analysis from the perspective of control theory
- Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!
猜你喜欢
MySQL提升大量数据查询效率的优化神器
C language exercises_ one
MMDetection3D加载毫米波雷达数据
Remember the problem analysis of oom caused by a Jap query
Redis入门完整教程:复制原理
服装企业部署MES管理系统的五个原因
Utilisation de la promesse dans es6
MATLB|具有储能的经济调度及机会约束和鲁棒优化
Redis getting started complete tutorial: client management
2022 spring recruitment begins, and a collection of 10000 word interview questions will help you
随机推荐
测试优惠券要怎么写测试用例?
A complete tutorial for getting started with redis: RDB persistence
wzoi 1~200
Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (filtering part)
新标杆!智慧化社会治理
Contribution of Writing Series
Redis入门完整教程:问题定位与优化
Wireshark installation
Introduction to ins/gps integrated navigation type
Difference and the difference between array and array structure and linked list
代码调试core-踩内存
What are the characteristics of the operation and maintenance management system
MATLB|具有储能的经济调度及机会约束和鲁棒优化
AWS learning notes (I)
密码学系列之:在线证书状态协议OCSP详解
Leetcode 77: combination
Error: could not find a version that satisfies the requirement xxxxx (from versions: none) solutions
The so-called consumer Internet only matches and connects industry information, and does not change the industry itself
PSINS中19维组合导航模块sinsgps详解(时间同步部分)
Redis入门完整教程:客户端案例分析