zoukankan      html  css  js  c++  java
  • Group_Concat函数示例

    1. 函数定义:

    GROUP_CONCAT([DISTINCT] expr [,expr ...]
                 [ORDER BY {unsigned_integer | col_name | expr}
                     [ASC | DESC] [,col_name ...]]
                 [SEPARATOR str_val])

    2. 创建测试数据:

    CREATE TABLE IF NOT EXISTS `departmentweekdata` (
      `department` varchar(255) NOT NULL,
      `week` varchar(10) NOT NULL,
      `interval` tinyint(4) DEFAULT NULL,
      `number` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    --
    -- 插入数据 `departmentweekdata`
    --
    
    INSERT INTO `departmentweekdata` (`department`, `week`, `interval`, `number`) VALUES
    ('CAO', '2014-12', 1, 1),
    ('GBG1', '2014-12', 1, 0),
    ('CAO', '2014-12', 2, 0),
    ('GBG1', '2014-12', 2, 0),
    ('CAO', '2014-12', 3, 1),
    ('GBG1', '2014-12', 3, 0),
    ('CAO', '2014-11', 1, 2),
    ('GBG1', '2014-11', 1, 0),
    ('CAO', '2014-11', 2, 0),
    ('GBG1', '2014-11', 2, 0),
    ('CAO', '2014-11', 3, 1),
    ('GBG1', '2014-11', 3, 0),
    ('CAO', '2014-10', 1, 1),
    ('GBG1', '2014-10', 1, 0),
    ('CAO', '2014-10', 2, 2),
    ('GBG1', '2014-10', 2, 0),
    ('CAO', '2014-10', 3, 0),
    ('GBG1', '2014-10', 3, 0),
    ('CAO', '2014-09', 1, 1),
    ('GBG1', '2014-09', 1, 0),
    ('CAO', '2014-09', 2, 0),
    ('GBG1', '2014-09', 2, 0),
    ('CAO', '2014-09', 3, 0),
    ('GBG1', '2014-09', 3, 0),
    ('CAO', '2014-08', 1, 2),
    ('GBG1', '2014-08', 1, 0),
    ('CAO', '2014-08', 2, 0),
    ('GBG1', '2014-08', 2, 0),
    ('CAO', '2014-08', 3, 1),
    ('GBG1', '2014-08', 3, 0),
    ('CAO', '2014-07', 1, 1),
    ('GBG1', '2014-07', 1, 0),
    ('CAO', '2014-07', 2, 2),
    ('GBG1', '2014-07', 2, 0),
    ('CAO', '2014-07', 3, 0),
    ('GBG1', '2014-07', 3, 0),
    ('CAO', '2014-06', 1, 0),
    ('GBG1', '2014-06', 1, 0),
    ('CAO', '2014-06', 2, 1),
    ('GBG1', '2014-06', 2, 0),
    ('CAO', '2014-06', 3, 0),
    ('GBG1', '2014-06', 3, 0),
    ('CAO', '2014-05', 1, 0),
    ('GBG1', '2014-05', 1, 0),
    ('CAO', '2014-05', 2, 1),
    ('GBG1', '2014-05', 2, 0),
    ('CAO', '2014-05', 3, 0),
    ('GBG1', '2014-05', 3, 0),
    ('CAO', '2014-04', 1, 1),
    ('GBG1', '2014-04', 1, 0),
    ('CAO', '2014-04', 2, 0),
    ('GBG1', '2014-04', 2, 0),
    ('CAO', '2014-04', 3, 0),
    ('GBG1', '2014-04', 3, 0),
    ('CAO', '2014-03', 1, 0),
    ('GBG1', '2014-03', 1, 0),
    ('CAO', '2014-03', 2, 0),
    ('GBG1', '2014-03', 2, 0),
    ('CAO', '2014-03', 3, 1),
    ('GBG1', '2014-03', 3, 0);

    2. 根据部门,间隔;将数量列组合成一个字符串;

    SELECT 
    Temp.`department`
    ,`Temp`.interval
    ,group_concat(number) AS TenWeekString
    FROM `weekdata` Temp
    GROUP BY Temp.`department`,Temp.`interval`;

    查询结果:

    CAO 1 1,1,1,0,1,2,2,0,0,1
    CAO 2 0,0,1,1,2,0,2,0,0,0
    CAO 3 1,1,0,0,0,1,0,0,1,0
    GBG1 1 0,0,0,0,0,0,0,0,0,0
    GBG1 2 0,0,0,0,0,0,0,0,0,0
    GBG1 3 0,0,0,0,0,0,0,0,0,0

    3. 同样的查询, SEPARATOR设定字符串的分隔符:

    SELECT 
        Temp.`department`
        ,`Temp`.interval
        ,Group_Concat(number SEPARATOR '|') AS TenWeekString
    FROM `weekdata` Temp
    GROUP BY Temp.`department`,Temp.`interval`;


    查询结果:

    CAO 1 1|1|1|0|1|2|2|0|0|1
    CAO 2 0|0|1|1|2|0|2|0|0|0
    CAO 3 1|1|0|0|0|1|0|0|1|0
    GBG1 1 0|0|0|0|0|0|0|0|0|0
    GBG1 2 0|0|0|0|0|0|0|0|0|0
    GBG1 3 0|0|0|0|0|0|0|0|0|0

    4.获得经排序的字符串:

    SELECT 
        Temp.`department`
        ,`Temp`.interval
        ,Group_Concat(number ORDER BY `temp`.`week` ASC SEPARATOR '|') AS TenWeekString
    FROM `weekdata` Temp
    GROUP BY Temp.`department`,Temp.`interval`;

    查询结果:

    CAO 1 0|1|0|0|1|2|1|1|2|1
    CAO 2 0|0|1|1|2|0|0|2|0|0
    CAO 3 1|0|0|0|0|1|0|0|1|1
    GBG1 1 0|0|0|0|0|0|0|0|0|0
    GBG1 2 0|0|0|0|0|0|0|0|0|0
    GBG1 3 0|0|0|0|0|0|0|0|0|0

    5.去除重复的值:

    SELECT 
        Temp.`department`
        ,`Temp`.interval
        ,Group_Concat(DISTINCT `number` ORDER BY `temp`.`week` ASC SEPARATOR '|') AS TenWeekString
    FROM `weekdata` Temp
    GROUP BY Temp.`department`,Temp.`interval`;

    查询结果:

    CAO 1 0|2|1
    CAO 2 1|2|0
    CAO 3 1|0
    GBG1 1 0
    GBG1 2 0
    GBG1 3 0

    6.设定输出字符串的最大长度:

     查看最大长度:

    SELECT @@global.group_concat_max_len as `max_length`;

    查询结果:

    1024

     设定最大长度(最大值不能超过4294967295):

    SET GLOBAL group_concat_max_len=1024000000;
  • 相关阅读:
    TCP/IP协议(一)网络基础知识 网络七层协议
    安卓混合开发——原生Java和H5交互,保证你一看就懂!
    最好用的17个渗透测试工具,全都在这里!(转载)
    【绿盟大讲堂】 渗透测试流程解析
    每日扫盲:eclipse快捷键 包括查找类、方法、变量汇总
    hadoop学习笔记(十):hdfs在命令行的基本操作命令(包括文件的上传和下载和hdfs中的文件的查看等)
    hadoop学习笔记(九):mr2HA高可用环境搭建及处步使用
    github新手使用
    hadoop学习笔记(九):mapReduce1.x和2.x
    hadoop学习笔记(八):hadoop2.x的高可用环境搭建
  • 原文地址:https://www.cnblogs.com/ucos/p/3631223.html
Copyright © 2011-2022 走看看