2016-09-21 1 views
1

을 계산하는 방법 쿼리 나는이 같은 데이터 테이블 :MySQL은, 같은 값을 goup 그 값

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

는 것이 가능하다 : 나는 그렇게 할

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

결과는?

+0

결과 집합의 첫 번째 행이 혼란 스럽습니다. '2 1b 2'? 왜 '2 1b 1,1'이 아니겠습니까? – 1000111

+0

아니요. – Pirate

+0

월을 기준으로 행을 그룹화 하시겠습니까? – Pirate

답변

0

당신은 GROUP_CONCAT 기능 아래 등으로 함께 두 번 GROUP BY를 사용해야합니다 :

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 

함수가에서 연결된 NULL이 아닌 값을 가진 문자열을 반환

MySQL GROUP_CONCAT() GROUP_CONCAT() 함수 그룹.

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'); 
+0

덕분에 행을 그룹화했습니다. – Dendry

0

이보십시오. MySQL 바이올린이 작동하지 않기 때문에 테스트 할 수있는 기회를 얻지 못했지만, 아이디어는 month,iku의 각 조합에 대해 먼저 sum(value)입니다. 그런 다음 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