을 계산하는 방법 쿼리 나는이 같은 데이터 테이블 :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
결과는?
을 계산하는 방법 쿼리 나는이 같은 데이터 테이블 :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
결과는?
당신은 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');
덕분에 행을 그룹화했습니다. – Dendry
이보십시오. 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
결과 집합의 첫 번째 행이 혼란 스럽습니다. '2 1b 2'? 왜 '2 1b 1,1'이 아니겠습니까? – 1000111
아니요. – Pirate
월을 기준으로 행을 그룹화 하시겠습니까? – Pirate