mysql 行转列 GROUP_CONCAT 试验

1.概要

很多时候需要用到行专列的方式做数据分析。比如对通讯数据的采集

数据采集结果如下:

变量 采集周期
1 3 1
2 5 1
1 3 2
2 7 2

我想要看的结果

变量1 变量2 采集周期
3 5 1
3 7 2

就是我想看到相关数据的周期变化情况。

2.试验

2.1创建数据如下(表名 tb5)

ID 数据1(v1) 数据2(v2) 周期(m)
1 1 11 1
2 2 22 1
3 3 33 2
4 4 44 2

SELECT GROUP_CONCAT(v1) FROM db1.tb5

从结果上看,是把所有的数据都变成列了。

 SELECT GROUP_CONCAT(v1) FROM db1.tb5 group by m

从结果上看,是把分组后的数据都放到了一行。

SELECT GROUP_CONCAT(v1,v2) FROM db1.tb5 group by m

 

有点蒙 是 111,222 是 1 11,2  22 的意思吗

SELECT GROUP_CONCAT(v1,"-",v2) FROM db1.tb5 group by m

这下明白了,GROUP_CONCAT只是把不同行的数据默认用,连接,只有不同的变量,中间不加任何连接符,你想连接,你可以自己加。

数据 每组第一行数 每组第二行数据 分组
数据1 数据2 数据1 数据2
1-11,2-22 1 11 1 22 第一组(m:1)
3-33,4-44 3 33 4 44 第一组(m:2)

 

 

 

 

 

 3.理解总结

对于GROUP_CONCAT,如果后面没有分组,会把全部行的数据显示成一列,这里的列是用,号隔开的也算列的意思。如果有分组,会把分组后的全部行转换成列。

对于每以行中的不同数据,默认不加分隔符合,需要你自己添加。

你可能感兴趣的:(mysq,行转列,group_concat)