작성
·
236
·
수정됨
0
사용자별 월별 세션 접속 횟수의 구간별 분포 집계 SQL로 구하기 - 02
위 과정을 학습하고 있습니다
select month
,case when monthly_user_cnt = 1 then '0_only_first_session'
when monthly_user_cnt between 2 and 3 then '2_between_3'
when monthly_user_cnt between 4 and 8 then '4_between_8'
when monthly_user_cnt between 9 and 14 then '9_between_14'
when monthly_user_cnt between 15 and 25 then '15_between_25'
when monthly_user_cnt >= 26 then 'over_26' end as gubun
, count(*) as user_cnt
from temp_01
group by month,
case when monthly_user_cnt = 1 then '0_only_first_session'
when monthly_user_cnt between 2 and 3 then '2_between_3'
when monthly_user_cnt between 4 and 8 then '4_between_8'
when monthly_user_cnt between 9 and 14 then '9_between_14'
when monthly_user_cnt between 15 and 25 then '15_between_25'
when monthly_user_cnt >= 26 then 'over_26' end
order by 1, 2;
위 쿼리에서 group by 항목이 이해가 잘 안되서 질문 드립니다.
위와 같이 그룹을 지으면
일자 + monthly_user_cnt 의 조합으로 그룹들이 만들어짐
select에서
select month
,case when monthly_user_cnt = 1 then '0_only_first_session'
when monthly_user_cnt between 2 and 3 then '2_between_3'
when monthly_user_cnt between 4 and 8 then '4_between_8'
when monthly_user_cnt between 9 and 14 then '9_between_14'
when monthly_user_cnt between 15 and 25 then '15_between_25'
when monthly_user_cnt >= 26 then 'over_26' end as gubun
위 쿼리로 넘어온 데이터(아직 컬럼으로 만들어지지 않은채 각 그룹별로 정의되어 넘어온 데이터)에 컬럼명을 붙여줌
위와 같은 동작을 하는게 맞는지요?
제가 이해하는게 맞는지 알고 싶습니다.
답변 1
0
안녕하십니까,
아래는 컬럼명이 아니라 컬럼값을 변화 시키는 것입니다.
case when monthly_user_cnt = 1 then '0_only_first_session'
when monthly_user_cnt between 2 and 3 then '2_between_3'
when monthly_user_cnt between 4 and 8 then '4_between_8'
when monthly_user_cnt between 9 and 14 then '9_between_14'
when monthly_user_cnt between 15 and 25 then '15_between_25'
when monthly_user_cnt >= 26 then 'over_26' end as gubun
그러니까 monthly_user_cnt값이 1 이면 값을 문자열 값이 '0_only_first_session' 으로 변경 시키는 것입니다.
예를 들어 monthly_user_cnt 값이 아래와 같이 있다고 할때
1 -> '0_only_first_session'
2 -> '2_between_3'
3-> '2_between_3'
4-> '4_between_8'
5->'4_between_8'
과 같이 컬럼값을 변경하는 것입니다. 그러면 해당 컬럼값 별로 group by한 count 건수는 '0_only_first_session' 은 1건, '2_between_3'는 2건, '4_between_8'은 2건과 같이 나오게 됩니다. group by 레벨을 case when을 사용해서 업무적인 요건에 맞춰 자유자재로 변경할 수 있습니다.
감사합니다.