안녕하세요 통계 쿼리를 짜다가 조금 막혀서 질문드려요..
구분 | 서울 | 부산 | 대구 | 인천 | 광주 | 대전 |
신청 | ||||||
승인 | ||||||
졸업 |
위와 같은 형태로 화면에 출력되고
실제 db 데이터는
유저아이디 | 지역코드 | 학교급 | 구분값(신청,승인,졸업) |
이런 식으로 들어가있습니다.
학교급도 지역별로 나눠서 표기해야하는데 예시로 작성하기가 어려워 우선은 지역으로만 질문드립니다.
피벗을 사용해볼수 있을까 하다가 거기서도 막혀서
한줄한줄 서브쿼리로 짜놨더니 화면, 데이터는 잘 나오는데 너무 느려서..바꿔볼까합니다.
팁이나 키워드만 알려주시면 제가 찾아서 해보겠습니다 ㅜ
pivot이나 sum case 사용하시면 될듯합니다~
select * from (select user_id, region_cd, typ from t) pivot ( count(user_id) for region_cd in ('001' as 서울, '002' as 부산, '003' as 대구, '004' as 인천, '005' as 광주, '006' as 대전))
select typ, sum(case when region_cd = '001' then 1 else 0 end) 서울, sum(case when region_cd = '002' then 1 else 0 end) 부산, sum(case when region_cd = '003' then 1 else 0 end) 대구, sum(case when region_cd = '004' then 1 else 0 end) 인천, sum(case when region_cd = '005' then 1 else 0 end) 광주, sum(case when region_cd = '006' then 1 else 0 end) 대전 from t group by typ