inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

다양한 사례로 익히는 SQL 데이터 분석

사용자별 월별 세션 접속 횟수의 구간별 분포 집계 SQL로 구하기 - 01

group by에 대해 질문 드립니다.

289

bluebamus

작성한 질문수 84

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 항목이 이해가 잘 안되서 질문 드립니다.

위와 같이 그룹을 지으면

  1. 일자 + monthly_user_cnt 의 조합으로 그룹들이 만들어짐

  2. 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

위 쿼리로 넘어온 데이터(아직 컬럼으로 만들어지지 않은채 각 그룹별로 정의되어 넘어온 데이터)에 컬럼명을 붙여줌

위와 같은 동작을 하는게 맞는지요?

제가 이해하는게 맞는지 알고 싶습니다.

 

sql postgresql dbms/rdbms 퍼포먼스-마케팅 데이터-엔지니어링

답변 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을 사용해서 업무적인 요건에 맞춰 자유자재로 변경할 수 있습니다.

감사합니다.

"주문별 고객별 연관 상품 추출 SQL로 구하기-02" 수업 질문

0

52

2

쿼리 질문있습니다!!

0

49

2

없는강의요청해도됩니까,,

0

91

2

아래와 동일한 질문에 대한 추가질문입니다

0

71

2

cnt/max로 구한 결과의 차이

0

101

2

쿼리에 대한 질문이 있습니다.

0

116

2

퍼널 질문드립니다.

0

113

1

ADSP자격증

0

283

2

특정 스키마에서 생성한 편집기의 쿼리를 판다스에 삽입하는 방법

0

161

1

백업파일 테이블 생성 오류

0

235

1

"사용자별 특정 상품 주문시 함께 가장 많이 주문된 다른 상품 추출하기"에서 조건관련..

0

162

1

Plotly을 이용해 treemap시각화시 공유사항

0

278

2

월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 수업 중 질문이 있습니다.

0

250

1

with 절 질문

0

240

1

데이터 분석 SQL Fundamentals 강의 할인 문의

0

215

1

리텐션 구하는 방법 문의

0

215

1

캐글데이터 Postgresql 사용

0

356

2

mau 구할때 group by 사용안해도 count 집계함수가 왜 가능한지 모르겠습니다.

0

262

1

매출분석 1에서 partition by와 group by의 차이

0

355

1

postgres 설치 오류

0

319

1

맥 계정에서 postgres 접속 시 비밀번호 입력 실패현상

1

543

2

pandas 연계시 오류.....

0

1246

3

시각화 그래프가 안보여요

0

300

1

ntile 정규분포에 관하여 ... 향후 일을 하게 될 시

0

359

1