用SQL进行多值列拆分成二值列的一个实现
来源:互联网 发布:办公软件站长网站 编辑:程序博客网 时间:2024/06/05 07:26
在进行数据分析的时候,往往需要把数据表格中的多值列拆分成二值列。如图1中的表A所示,fruits为一个多值列,值可以是不同的水果名字,表明某个以ID作为标识的人吃水果的记录。现在的需求是要把是否吃了什么具体水果拆成多个列,最终如表B所示。在这个例子中,吃水果的记录还有重复,所以需要把重复的记录去掉。
具体来说,可以将这个任务拆分成多个步骤,由不同的SQL select语句完成。如图2所示。这儿使用的数据库是DB2。
图1
图2
1. 拆分列
从表A到A1的过程重点是需要将每一行中的水果名字转化成相应新列的0/1值。
select id, INSTR(fruits, 'apple') as apple, INSTR(fruits, 'banana') as banana from A;
2. 去重
可以看到,id为3的记录重复出现了。因此需要用group by去掉重复的。这次的查询是基于上一次的结果,因此我们用with将上一次的查询包含进来。
with q1 as ( select id, INSTR(fruits, 'apple') as apple, INSTR(fruits, 'banana') as banana from A)select * from q1 group by id, apple, banana;
3. 整合行
A2中,id为2的记录出现了2次,可以把相应的列的值整合起来。同样用with将第二次的查询包含进来。
with q1 as ( select id, INSTR(fruits, 'apple') as apple, INSTR(fruits, 'banana') as banana from A), q2 as ( select * from q1 group by id, apple, banana)select id, sum(apple) as apple, sum(banana) as banana from q2 group by id;
阅读全文
0 0
- 用SQL进行多值列拆分成二值列的一个实现
- SQL进行字符的拼接与拆分
- 一个拆分有规律字符串的SQL
- 拆分一个稍微有点复杂的字符串,用c#实现
- 拆分字符进行sql查询
- 一个关于sql语句的问题解决,包括:字符串拆分,游标
- SQL:列的拆分
- 教你如何实现SQL下的字符串拆分
- SQL使用apply进行拆分列值
- SQL Server : T-SQL中拆分字符串的一个自定义函数
- 地址栏传值的方法,写在一个字符串,然后在进行拆分
- 编写一个能根据指定字符对字符串进行拆分的方法
- 如何将一个PDF文件页面进行的拆分为多个PDF文件
- Grunt如何拆分Gruntfile.js进行任务拆分的?
- 用 SQL 语句对一行数据拆分成多行的方法
- 将一个以逗号分隔的字符串拆分单个记录,并生成插入sql语句
- 用Delphi对SQL-DMO进行封装的一种实现
- c++ 实现整数的拆分
- 数据结构实验之栈与队列四:括号匹配
- NOIP2000提高组 单词接龙
- WGS84、GCJ02、BD09地图坐标系间的坐标转换及坐标距离计算
- Orcal数据库 表修改
- 微信小程序常见爬坑
- 用SQL进行多值列拆分成二值列的一个实现
- 10分钟适配 iOS 11 & iPhone X
- 第二课JavaScript函数传参
- Springframework下所有jar包作用简介
- 快速排序
- C++之模版
- MYSQL 学习笔记二 数据库引擎与数据表的基本操作
- 制作根文件系统debian9
- gerrit克隆,权限不够的解决方法