mysql,查询如何goup相同的值并计算该值

时间:2016-09-21 07:32:39

标签: mysql

我有这样的数据表:

month   IKU   value
  2     1b      1
  2     1b      1
  1     2a      1
  1     1a      1

我想要的结果:

month   IKU     value
  2     1b       2
  1     1a,2a    1,1

可能吗?

2 个答案:

答案 0 :(得分:0)

您需要使用GROUP BY两次以及GROUP_CONCAT功能,如下所示:

SELECT 
tmp.month,
GROUP_CONCAT(tmp.IKU) AS IKU,
GROUP_CONCAT(tmp.summedValue) AS value
FROM 
(
    SELECT 
        month,
        IKU,
        SUM(value) AS summedValue
    FROM t
    GROUP BY month,IKU
) AS tmp 
GROUP BY tmp.month
ORDER BY tmp.month DESC

GROUP_CONCAT()函数

MySQL GROUP_CONCAT()函数返回一个字符串,其中包含来自组的连接非NULL值。

当没有非NULL值时返回NULL。

<强>测试

-- ----------------------------
-- Table structure for `t`
-- ----------------------------
DROP TABLE IF EXISTS `t`;
CREATE TABLE `t` (
  `month` int(11) DEFAULT NULL,
  `IKU` varchar(10) DEFAULT NULL,
  `value` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of t
-- ----------------------------
INSERT INTO `t` VALUES ('2', '1b', '1');
INSERT INTO `t` VALUES ('2', '1b', '1');
INSERT INTO `t` VALUES ('1', '2a', '1');
INSERT INTO `t` VALUES ('1', '1a', '1');

答案 1 :(得分:0)

试试这个。没有机会测试它,因为MySQL小提琴不起作用,但想法是sum(value)的每个组合首先month,iku。然后使用group_concat连接结果集。

select month
  ,group_concat(IKU separator ',') 
  ,group_concat(value separator ',')
from 
(select month,IKU,sum(value) as value 
   from Table1 group by month,IKU
) t
group by IKU