--[Quiz]์ต๊ทผ 12๊ฐ์๋์์ ๋ ์ง(yyyymm)์ถ๋ ฅํ๊ธฐ
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201501','YYYYMM'), LEVEL-1),'YYYYMM') months
FROM DUAL
CONNECT BY LEVEL <= MONTHS_BETWEEN(TO_DATE('201512','YYYYMM'),TO_DATE('201501','YYYYMM'))+1;
connect by level ๊ธฐ๋ณธ
select level from dual
connect by level <= 5;
level ์ connect by level์์ ๋ฒ์๋ฅผ ์ ํด์ฃผ๊ณ , ๋ง์น for๋ฌธ์ฒ๋ผ select ๋ฌธ์์ level์ด๋ผ๋ ์ด๋ฆ์ผ๋ก 1๋ถํฐ ์์๋์ด ์ฐจ๋ก๋ก ๋์ค๊ฒ ๋๋ค.
์ ๊ทธ๋ผ ํด์ฆ ๋ต์ผ๋ก ์๊ฐํ sql ๋ฌธ์ ํ๋ํ๋ ๋ฏ์ด๋ณด๋๋ก ํ๊ฒ ๋ค.
CONNECT BY LEVEL <= MONTHS_BETWEEN(TO_DATE('201512','YYYYMM'),TO_DATE('201501','YYYYMM'))+1;
์ด ๋ถ๋ถ์์ ๊ทธ๋ฅ 12๋ก ๊ฐ์ ์ค๋ ์๊ด ์์๊ฒ ์ง๋ง, ๋์ ํ ๋น์ ์ํด ๊ตณ์ด๊ตณ์ด ์ด๋ ๊ฒ ๋ง๋ค์๋ค.
MONTHS_BETWEEN ํจ์๋ฅผ ํตํด 12์ - 1์ = 11 ์ฌ๊ธฐ์ +1 ์ ํตํด 12์ ๋ง๋ค์๋ค.
๊ทธ๋ผ ์ง๊ธ level ๊ฐ์ 1๋ถํฐ ์ฐจ๋ก๋ก 1,2,3 ....12 ๊น์ง ๋์ฌ ๊ฒ์ด๋ค.
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201501','YYYYMM'), LEVEL-1),'YYYYMM') months
์ฌ๊ธฐ์ ADD_MONTHํจ์๋ฅผ ํตํด 0,1,2, ....11 ์ฐจ๋ก๋ก 0 ๊ฐ์, 1๊ฐ์ ์ด๋ฐ ์์ผ๋ก ๋ํด์ค ๊ฐ์ TO_CHAR ํจ์๋ฅผ ํตํด ๋ชฉํํ๋ yyyymm ํํ๋ก ๋ง๋ค์ด์ฃผ๊ณ , alias๋ก months๋ก ์ค์ ํ๋ค.
--[๋ฌธ์ ] 15๋ ๋ ์๋ณ ์ ์ฌ์์ ์๋ฅผ ์ธ์ด์ ์ถ๋ ฅํ์์ค.
--๋จ, 1์ 12์๊น์ง ์๋ณ๋ก ์ถ๋ ฅํ์์ค. ์ ์ฌ์๊ฐ ์๋๋ฌ์ 0์ผ๋ก ์ถ๋ ฅํ์์ค.
์ผ๋จ ์ด๋ฐ ๋ฌธ์ ๋ ์ ์ง์ ์ผ๋ก ๋ค๊ฐ๊ฐ ๋ณด๊ฒ ๋ค.
SELECT TO_CHAR(START_DATE,'YYYYMM') ์
์ฌ์ ,COUNT(*) ์
์ฌ์์
FROM S_EMP
WHERE START_DATE < TO_DATE('20160101','YYYYMMDD')
GROUP BY TO_CHAR(START_DATE,'YYYYMM');
์ ์ฌ์ผ(start_date)๊ฐ 16๋ 1์ 1์ผ ์ ์ธ ์ฌ๋๋ง ํํฐ๋งํ ํ yyyymmํํ๋ก ๊ทธ๋ฃนํ ํ ์ ์ฌ์ ์๋ฅผ ์ง๊ณํ ๊ฒฐ๊ณผ
์ด๋ ๊ฒ ๋๋ค.
๊ทธ๋ผ connect by level์ ํตํด 12๋ฌ์ ์ถ๋ ฅํด๋์ ์ฟผ๋ฆฌ์ ํฉ์ณ๋ณด๊ฒ ๋ค.
SELECT month_all.months ์
์ฌ์, NVL(semp.hirepeople,0) ์
์ฌ์์
FROM
(SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201501','YYYYMM'), LEVEL-1),'YYYYMM') months
FROM DUAL
CONNECT BY LEVEL <= MONTHS_BETWEEN(TO_DATE('201512','YYYYMM'),TO_DATE('201501','YYYYMM'))+1) month_all,
(SELECT TO_CHAR(START_DATE,'YYYYMM') hiredate ,COUNT(*) hirepeople
FROM S_EMP
WHERE START_DATE < TO_DATE('20160101','YYYYMMDD')
GROUP BY TO_CHAR(START_DATE,'YYYYMM')) semp
WHERE month_all.months = semp.hiredate(+)
ORDER BY month_all.months;
์ด๋ฌ๋ฉด ์๊ตฌ์ฌํญ๋๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ์ ์ ์๋ค.