TIL

2024-09-03

여연찌 2024. 9. 3. 19:47
  • Today

데이터 분석 온보딩 과제

 


  • Today I Learned

 

SQL

 

1. 첫 코칭 신청 이후, 다음 코칭을 받기 까지의 평균 기간

WITH r AS (
        SELECT userid
             , createdat
             , ROW_NUMBER() OVER (PARTITION BY userid ORDER BY createdat ASC) AS rnk
        FROM data_set
        WHERE result != 'cancel'
        ),
	c AS (
        SELECT userid
             , MAX(CASE WHEN rnk = 1 THEN createdat ELSE 0 END) AS first_createdat
             , MAX(CASE WHEN rnk = 2 THEN createdat ELSE 0 END) AS second_createdat
        FROM r
        GROUP BY userid
        HAVING count(*) >= 2
        ) 
SELECT AVG(datediff(second_createdat,first_createdat))
FROM c

orderid 별 createdat 오름차순 순서로 정렬을 하여 순서를 매겨준다.

* 동일한 유저가 여러번 신청가능 한 것으로 확인하였고,

코칭을 '받은' 이후, 두번째 코칭을 '받은' 것을 기준으로 순서를 매겨주기 위해 cancel 값을 제외하였다.

 

1번째 날짜와, 2번째 날짜의 차이를 datediff 로 계산하여 평균을 내주었다.

 

2. 코스 별 최종 합격인원은 각각 몇 명, 몇 퍼센트인가? 

WITH pass AS (
        SELECT course 
             , count(DISTINCT userid) pass_cnt
        FROM data_set
        WHERE status = '최종합격'
        GROUP BY course 
        ),
    	total AS (
        SELECT course
             , count(DISTINCT userid) total_user
        FROM data_set
        GROUP BY course
        )
SELECT p.course
     , p.pass_cnt
     , (p.pass_cnt/t.total_user)*100.0 AS percentage
FROM pass p
JOIN total t ON p.course=t.course

 

코스별로 그룹화 한 후

합격한 인원과 전체 인원을 구하고 퍼센트를 구해주었다.

* 코칭을 '받은' 것과 별개로 신청을 한 인원에 따라 분류하였으므로 CANCEL 값은 제외하지 않았다.

 

3. 최종 합격한 인원과 다른 이용자들과의 차이점

# type 별 최종 합격 인원과 최종합격이 아닌 인원의 차이(내배캠)
WITH a AS (
SELECT type
	 , count(userid) total_cnt
	 , count(DISTINCT userid) cnt_user
FROM data_set
WHERE status = '최종합격' AND course = 'NBCamp'
GROUP BY type
),
b AS (
SELECT type
	 , count(userid) total_no_cnt
	 , count(DISTINCT userid) cnt_no_user
FROM data_set
WHERE status != '최종합격' AND course = 'NBCamp'
GROUP BY type
)
SELECT *
FROM a
JOIN b ON a.type=b.TYPE

이렇게 쿼리를 짰지만..

생각해보니 앞서 최종합격한 인원은 제외 해야함을 깨달았다.

내일은 if 나 case 문을 사용해서 해보던지 아니면 필터링을 해볼 수 있는 방안을 고민해보아야겠다.

 


  • Next

이용자 별 차이점 인사이트 도출

파이썬으로도 생각해보기

 

'TIL' 카테고리의 다른 글

2024-09-23  (0) 2024.09.23
2024-09-05  (1) 2024.09.05
2024-09-02  (0) 2024.09.02
2024-08-22  (0) 2024.08.22
2024-08-21  (0) 2024.08.21