테이블을 만드는데 쿼리문을 어떻게 구성해야 할까요....
혼자 해보고는 있는데 더 좋은 답이 있는지 궁금합니다.
WITH Table_01 (seq, id, x, y, timezn_cd
, m00, m10, m15, m20, m25, m30, m35, m40, m45, m50, m55, m60, m65, m70
, f00, f10, f15, f20, f25, f30, f35, f40, f45, f50, f55, f60, f65, f70
, total, admi_cd, etl_ymd
) AS
(
SELECT 1, 85292512, 452052, 362693, 0, 0, 0, 0, 2, 3, 3, 3, 3, 4, 2, 4, 6, 3, 1, 0, 0, 1, 2, 3, 2, 2, 1, 3, 3, 1, 1, 1, 1, 55, 27110517, '20211230'
UNION ALL SELECT 2, 85292512, 452052, 362693, 0, 0, 0, 0, 2, 3, 4, 3, 4, 5, 3, 4, 3, 2, 2, 0, 0, 1, 2, 2, 1, 1, 2, 3, 2, 1, 1, 1, 1, 53, 27110565, '20211209'
UNION ALL SELECT 3, 85292512, 452052, 362693, 0, 0, 0, 0, 2, 7, 3, 4, 2, 2, 2, 4, 2, 1, 1, 0, 0, 0, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 0, 43, 27110640, '20211214'
UNION ALL SELECT 4, 85292512, 452052, 362693, 0, 0, 0, 0, 3, 7, 5, 11, 5, 7, 6, 6, 7, 2, 1, 0, 0, 1, 5, 2, 2, 4, 2, 6, 2, 2, 1, 2, 1, 90, 27110670, '20211227'
UNION ALL SELECT 5, 85292512, 452052, 362693, 0, 0, 0, 1, 2, 6, 3, 6, 3, 3, 5, 4, 4, 2, 1, 0, 0, 1, 2, 3, 2, 1, 2, 3, 2, 2, 1, 1, 1, 61, 27110680, '20211218'
UNION ALL SELECT 6, 85292512, 452052, 362693, 0, 0, 0, 1, 3, 7, 6, 8, 8, 9, 5, 6, 7, 4, 1, 0, 0, 1, 3, 4, 3, 5, 4, 4, 3, 2, 0, 1, 1, 96, 27140510, '20211205'
UNION ALL SELECT 7, 85292512, 452052, 362693, 0, 0, 1, 4, 12, 15, 13, 10, 10, 8, 8, 10, 9, 5, 3, 0, 1, 4, 8, 8, 4, 7, 5, 7, 6, 5, 4, 1, 2, 170, 27140540, '20211201'
UNION ALL SELECT 8, 85292512, 452052, 362693, 1, 0, 0, 0, 1, 3, 2, 2, 3, 2, 2, 2, 2, 2, 1, 0, 0, 0, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 33, 27140570, '20211215'
UNION ALL SELECT 9, 85292512, 452052, 362693, 1, 0, 0, 0, 2, 2, 1, 2, 1, 2, 2, 1, 3, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 28, 27140600, '20211228'
UNION ALL SELECT 10, 85292512, 452052, 362693, 1, 0, 0, 0, 2, 3, 2, 2, 3, 1, 1, 3, 2, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 29, 27140615, '20211202'
)
, Table_02 (seq, id, emd_cd) AS
(
SELECT 1, 85292512, 3020010100
UNION ALL SELECT 2, 85292513, 3020010200
UNION ALL SELECT 3, 85292514, 3020010300
UNION ALL SELECT 4, 85292515, 3020010400
UNION ALL SELECT 5, 85292516, 3020010500
UNION ALL SELECT 6, 85292517, 3020010600
UNION ALL SELECT 7, 85292518, 3020010700
UNION ALL SELECT 8, 85292519, 3020010800
UNION ALL SELECT 9, 85292520, 3020010900
UNION ALL SELECT 10, 85292521, 3020011000
)
, Table_03 (seq, emd_cd, emd_nm) AS
(
SELECT 1, 3020010100, '원내동'
UNION ALL SELECT 2, 3020011000, '방동'
UNION ALL SELECT 3, 3020014700, '송강동'
UNION ALL SELECT 4, 3020011200, '구암동'
UNION ALL SELECT 5, 3020011700, '장대동'
UNION ALL SELECT 6, 3020011900, '노은동'
UNION ALL SELECT 7, 3020012000, '지족동'
UNION ALL SELECT 8, 3020014300, '탑립동'
UNION ALL SELECT 9, 3020012300, '어은동'
UNION ALL SELECT 10, 3020012500, '신성동'
)
-- MySQL(MariaDB) 에서 test --
SELECT SUBSTR(a.etl_ymd, 1, 6) etl_ym
, c.emd_nm
, a.timezn_cd
, CASE WHEN DATE_FORMAT(a.etl_ymd, '%w') IN (6, 0) THEN '휴일' ELSE '평일' END x
, ROUND(AVG(m10 + m15 + m00)) 남성_10대이하
, ROUND(AVG(m20 + m25 )) 남성_20대
, ROUND(AVG(m30 + m35 )) 남성_30대
, ROUND(AVG(m40 + m45 )) 남성_40대
, ROUND(AVG(m50 + m55 )) 남성_50대
, ROUND(AVG(m60 + m65 + m70)) 남성_60대이상
, ROUND(AVG(f10 + f15 + f00)) 여성_10대이하
, ROUND(AVG(f20 + f25 )) 여성_20대
, ROUND(AVG(f30 + f35 )) 여성_30대
, ROUND(AVG(f40 + f45 )) 여성_40대
, ROUND(AVG(f50 + f55 )) 여성_50대
, ROUND(AVG(f00 + f65 + f70)) 여성_60대이상
, ROUND(AVG(m00+m10+m15+m20+m25+m30+m35+m40+m45+m50+m55+m60+m65+m70)) 남성
, ROUND(AVG(f00+f10+f15+f20+f25+f30+f35+f40+f45+f50+f55+f60+f65+f70)) 여성
, ROUND(AVG(total)) 전체
FROM Table_01 a
INNER JOIN Table_02 b
ON a.id = b.id
INNER JOIN Table_03 c
ON b.emd_cd = c.emd_cd
WHERE a.etl_ymd BETWEEN '20211201' AND '20211231'
GROUP BY SUBSTR(a.etl_ymd, 1, 6)
, c.emd_nm
, a.timezn_cd
, CASE WHEN DATE_FORMAT(a.etl_ymd, '%w') IN (6, 0) THEN '휴일' ELSE '평일' END
;
와 이 긴걸..... 진짜 감사합니다. 참고해서 공부 열심히 하겠습니다.