월별 카운트구하는 쿼리를 짜려고 하는데요 도움좀 주세요. 1 2 723

by 일회용 [MySQL] [2018.03.12 16:57:57]


-- 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

위 형식으로 나와야하는데

조건들이 추가 되니 쉽게 안되네요.

도움 부탁드립니다.

by 마농 [2018.03.12 17:33:10]
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
;

 


by 일회용 [2018.03.14 13:15:45]

감사합니다. 많은 도움이 되었습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입