mysql 날짜쿼리 관련 질문드리겠습니다. 0 1 710

by 밍밍밍밍 [MySQL] [2018.04.20 09:54:48]


20180420_095210.png (1,891Bytes)

select 
  concat(left(sdate,4),'-',substring(sdate,6,2)) ym, 
  count(distinct(kno)) Cnt from 
program where agroup = '0601'  
  group by ym 
  order by ym asc

 

안녕하세요 날짜관련 쿼리 질문드리겠습니다.

쿼리실행결과가 첨부한 파일입니다.

만약에 등록된 kno값이 없어도 해당월에 0으로 나오게 할수있을까요?

 

2018-01   72

2018-02   112

2018-03   124

2018-04   0

2018-05   0

.......

2018-10   1

 

이런식으로 조회를 하고싶습니다.

by 마농 [2018.04.20 15:03:45]
SELECT a.ym
     , IFNULL(cnt, 0) cnt
  FROM (-- 기준 월 집합 --
        SELECT '201712' ym
        UNION ALL '201801'
        UNION ALL '201802'
        UNION ALL '201803'
        UNION ALL '201804'
        UNION ALL '201805'
        UNION ALL '201806'
        UNION ALL '201807'
        UNION ALL '201808'
        UNION ALL '201809'
        UNION ALL '201810'
        UNION ALL '201811'
        UNION ALL '201812'
        UNION ALL '201901'
        ) a
 INNER JOIN
       (SELECT DATE_FORMAT(MIN(sdate), '%Y%m') sym
             , DATE_FORMAT(MAX(sdate), '%Y%m') eym
          FROM program
         WHERE agroup = '0601'
        ) b
    ON a.ym BETWEEN b.sym AND b.eym
  LEFT OUTER JOIN
       (SELECT DATE_FORMAT(sdate, '%Y%m') ym
             , COUNT(DISTINCT kno) cnt
          FROM program
         WHERE agroup = '0601'
         GROUP BY DATE_FORMAT(sdate, '%Y%m')
        ) c
    ON a.ym = c.ym
 ORDER BY ym
;

 

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