-- tb_item 아이템정보 registDate , registerId
-- tb_user 유저정보 userId , userName
-- tb_group 그룹정보 groupId , groupName
-- tb_group_user 유저가 속한 그룹정보 groupId , userId
-- 여기서 조건 각월의 시작과 끝은 16일 ~ 다음달 15일까지
-- 예로 ) 1월의 경우 20171216 ~ 20180115 까지가 1월 카운트, 20180116 ~ 20180215 까지 2월 카운트 식으로 진행됨
-- 결과값
-- 그룹별
------------------------------------------------
-- groupName || m1 || m2 || .... || m12
-- 1팀 0 0 ... 0
-- 2팀 0 1 ... 1
-------------------------------------------------
-- 유져별
-------------------------------------------------
-- groupName || userName || m1 || m2 || ..... || m12
-- 1팀 홍길동 0 1 ..... 0
-- 2팀 아무개 0 2 ...... 0
위 형식으로 나와야하는데
조건들이 추가 되니 쉽게 안되네요.
도움 부탁드립니다.
SELECT groupId, groupName -- , userId, userName , COUNT(CASE mm WHEN '01' THEN 1 END) m01 , COUNT(CASE mm WHEN '02' THEN 1 END) m02 , COUNT(CASE mm WHEN '03' THEN 1 END) m03 , COUNT(CASE mm WHEN '04' THEN 1 END) m04 , COUNT(CASE mm WHEN '05' THEN 1 END) m05 , COUNT(CASE mm WHEN '06' THEN 1 END) m06 , COUNT(CASE mm WHEN '07' THEN 1 END) m07 , COUNT(CASE mm WHEN '08' THEN 1 END) m08 , COUNT(CASE mm WHEN '09' THEN 1 END) m09 , COUNT(CASE mm WHEN '10' THEN 1 END) m10 , COUNT(CASE mm WHEN '11' THEN 1 END) m11 , COUNT(CASE mm WHEN '12' THEN 1 END) m12 FROM (SELECT d.groupId , d.groupName , b.userId , b.userName , DATE_FORMAT(a.regist_date - INTERVAL 15 DAY + INTERVAL 1 MONTH, '%m') mm FROM tb_item a INNER JOIN tb_user b ON a.registerId = b.userId INNER JOIN tb_group_user c ON b.userId = c.userId INNER JOIN tb_group d ON c.groupId = d.groupId WHERE a.regist_date >= '20171216' AND a.regist_date < '20181216' ) a GROUP BY groupId, groupName -- , userId, userName ;