- Today
데이터 분석 온보딩 과제
- Today I Learned
SQL
1. 한 번 이상 활용한 인원
SELECT count(DISTINCT userid)
FROM data_set
WHERE result NOT LIKE 'CANCEL'
그래도 이 문제는 쉽게 풀이를 했다.. .
아주 간단한 문제 였음 ..
2. 최종 합격한 인원은 몇명이고, 그 그룹의 이력서 진단/ 코칭 신청 의 평균 횟수
처음 풀이했을 때에는
SELECT AVG(resume_count)
FROM
(
SELECT userid, count(*) AS resume_count
FROM data_set
WHERE status = '최종합격' AND type = 'resume' AND RESULT != 'cancel'
GROUP BY 1
) a
이렇게 풀이했는데 아무리 해도 정답지와 같은 값이 나오지 않는 거다...
결국 정답과 같았던 쿼리는 다음과 같다.
WITH a AS (
SELECT userid,
count(CASE WHEN TYPE = 'resume' THEN 1 END) resume_count,
count(CASE WHEN TYPE = 'interview' THEN 1 end) interview_count
FROM data_set
WHERE status = '최종합격' AND RESULT != 'cancel'
GROUP BY userid
)
SELECT count(userid)
, avg(resume_count)
, avg(interview_count)
FROM a
case 구문으로 조건에 충족하면 1을 더해주는 방식으로 count 를 해준다.
where 절에서 최종합격이며 cancel 을 제외해야 한다는 조건을 주었다.
유저별로 그룹화 한뒤, 해당 유저들의 명수와 resume 의 평균 횟수, interview 의 평균 횟수
를 구해주었다.
3. 진단+코칭을 가장 많이 활용한 인원의 각 횟수는 몇 번이며, 그 인원의 id 값
SELECT userid
, count(CASE WHEN TYPE = 'resume' OR TYPE = 'interview' THEN 1 end) AS cnt
FROM data_set
WHERE RESULT != 'cancel'
GROUP BY userid
ORDER BY cnt DESC
LIMIT 1
resume 또는 interview 라면 1을 더해주며 count 를 해준다.
여기서 cancel 은 제외한다.
유저별로 그룹화 해준뒤 count 의 내림차순으로 정렬 하고, 1개의 값만 출력한다
Python
1.
df[df['result'] != 'CANCEL']['userid'].nunique()
2.
df[df['status']=='최종합격']['userid'].nunique()
나머지는 내일 이어서!
- Next
온보딩 과제 2번째 풀이
'TIL' 카테고리의 다른 글
2024-09-05 (1) | 2024.09.05 |
---|---|
2024-09-03 (0) | 2024.09.03 |
2024-08-22 (0) | 2024.08.22 |
2024-08-21 (0) | 2024.08.21 |
2024-08-20 (1) | 2024.08.20 |