TIL - 250214

오정수·2025년 2월 14일

TIL

목록 보기
49/78

요즘 과제를 열심히 하고 있다.
1개월 단기 인턴을 신청해서 1차 합격이 되어 2차 합격으로 가기 위해 과제를 하고 있다.

코드만 간단하게 소개하겠다.

1번 문제

SELECT COUNT(DISTINCT userid) cnt
FROM intern2
WHERE createdat >= '2023-07-03'
AND createdat >= '2023-01-01';

이건 기간 내에 있던 유저가 1번 이상 한 인원이기에 DISTINCT로 중복 제거를 했다.

2번 문제

-- SELECT
-- 	SUM(CASE WHEN status='최종합격' THEN 1 ELSE 0 END) final_pass_cnt
--     ,ROUND(
-- 		SUM(CASE WHEN status='최종합격' AND type='resume' THEN 1 ELSE 0 END)
--         /COUNT(DISTINCT userid)
--         ,2) final_resume_mean
--     ,ROUND(
-- 		SUM(CASE WHEN status='최종합격' AND type='interview' THEN 1 ELSE 0 END)
--         /COUNT(DISTINCT userid)
--         ,2) final_interview_mean
-- FROM intern2;

SELECT
	COUNT(userid)
    ,ROUND(
		SUM(CASE WHEN type='resume' THEN 1 ELSE 0 END)
        /COUNT(DISTINCT userid)
        ,2) final_resume_mean
    ,ROUND(
		SUM(CASE WHEN type='interview' THEN 1 ELSE 0 END)
        /COUNT(DISTINCT userid)
        ,2) final_interview_mean
FROM intern2
WHERE status='최종합격';

요거는 두 가지의 방법으로 했었는데 결과적으로는 두번째 코드가 옳은 코드이다.
이유는 다음과 같다. 첫번째 코드처럼 할 경우 COUNT(DISTINCT userid)가 최종합격의 비율이 아니라 전체 인원을 나누는 거라 옳지 않다.

오늘은 여기까지.
내일 SQL로 완료하고 Python으로 추가적으로 하고 싶은 욕심이 있다. 화이팅하자.

profile
안녕하세요 오정수입니다

0개의 댓글