Data Science/SQL86 C사 SQL 쿼리테스트 대비: 재구매율 분석 1. [재구매율 분석] 특정 기간 내 재구매 고객 비율 산출[문제 정의]쿠팡에서는 고객의 충성도를 측정하기 위해 '재구매율'을 중요하게 관리합니다. 2025년 1월에 첫 구매를 한 고객들 중, 30일 이내에 두 번째 구매를 발생시킨 고객의 비율을 구하십시오.테이블: Orders (컬럼: order_id, customer_id, order_date)결과: repurchase_rate (소수점 둘째 자리까지)■ 풀이 방법이 문제는 **'최초 구매일'**이라는 기준점과 **'그 이후의 행동'**을 연결해야 합니다.유저별 최초 구매일을 찾고 (MIN),해당 유저의 전체 구매 기록과 조인하여 1일 이상 30일 이하의 간격이 존재하는지 확인합니다.단순히 "구매 횟수가 2회 이상인 사람"은 재구매가 아니라 그냥 '다.. 2026. 2. 5. T사 SQL 쿼리테스트 대비4: 리텐션 분석 (Retention Analysis) 1. 리텐션 분석 (Retention Analysis)[가상 문제] 클래식 리텐션 (Day 1 Retention) 산출특정 일자에 처음 방문한 유저가 **정확히 다음 날(D+1)**에 다시 방문했는지 확인하여, 일자별 Day 1 리텐션을 구하십시오.테이블: UserVisits (컬럼: user_id, visit_date) 리텐션은 **'기준일(Day 0)의 유저 리스트'**를 확보하고, 그들이 **'비교일(Day N)'**에도 명단에 있는지 대조하는 작업입니다.전체 방문자 수만 세는 것이 아니라 리텐션은 **'특정 날짜에 들어온 그 놈이 다시 왔는가'**를 묻는 겁니다. Self Join을 통해 기준일 유저와 기준일+1일 유저를 1:1로 매칭해야 합니다. WITH FirstVisit AS ( -- .. 2026. 2. 5. T사 SQL 쿼리테스트 대비3: 퍼널 분석 (Funnel Analysis) 1. 퍼널 분석 (Funnel Analysis)[가상 문제] 송금 퍼널 단계별 전환율 산출유저의 앱 활동 로그(AppLogs)를 바탕으로 '홈 방문 → 송금 버튼 클릭 → 송금 완료'로 이어지는 퍼널의 각 단계별 유저 수와 이전 단계 대비 전환율을 구하십시오.단계: home_view -> transfer_click -> transfer_complete테이블: AppLogs (컬럼: user_id, event_name, timestamp) 퍼널 분석의 핵심은 '동일 유저'가 '순서대로' 단계를 밟았는지 확인하는 것입니다. 각 유저별로 각 단계의 도달 여부를 플래그(0 또는 1)로 만든 뒤 집계하는 'Pivot' 방식이 가장 효율적입니다. WITH UserSteps AS ( SELECT .. 2026. 2. 5. T사 SQL 쿼리테스트 대비2: A/B테스트 1. 가상의 출제 문제 (Problem Definition)[문제] A/B 테스트 전환율(CVR) 및 유의미성 분석토스 송금 버튼의 색상을 **블루(A안)**에서 **레드(B안)**로 변경하는 테스트를 진행했습니다. 유저별로 배정된 실험군 정보(AbTestGroups)와 실제 송금 성공 로그(RemitLogs)를 결합하여 다음 지표를 산출하십시오.실험군별 총 유저 수 (실험에 참여한 전체 유저)실험군별 송금 성공 유저 수 (최소 1번 이상 송금 성공한 유저)전환율(CVR): (송금 성공 유저 수 / 총 유저 수)결과 정렬: 전환율이 높은 순서대로 정렬. 테이블 정보:AbTestGroups: user_id, group_name ('A', 'B')RemitLogs: user_id, event_timestam.. 2026. 2. 5. T사 SQL 쿼리테스트 대비: MAU 1. MAU 정의MAU (Monthly Active Users) 한달 동안 서비스를 이용한 순수 이용자 수 Monthly: 기준이 되는 한 달(보통 1일~말일) 동안.Active: 단순히 가입된 상태가 아니라, 앱 실행, 로그인, 클릭 등 '활동'을 한 유저.Users: 중복을 제거한(Unique) 실제 사람 수. 한 사람이 100번 방문해도 MAU는 1로 집계됩니다.주의사항MAU를 구할 때 할 수 있는 실수는 DISTINCT를 빼먹는 것오답: SELECT COUNT(user_id) FROM Logs (중복 방문이 다 카운트되어 숫자가 뻥튀기됨.)정답: SELECT COUNT(DISTINCT user_id) FROM Logs (한 달 동안의 '순수' 유저 수만 추출.) 2. MAU와 함께 세트로 외워야.. 2026. 2. 5. [SQL/오답] 3회 연속 등장하는 숫자 찾기: LEAD vs 삼중 Self Join (LeetCode180 Medium) 180. Consecutive Numbers; LEAD, SELF JOINhttps://leetcode.com/problems/consecutive-numbers/submissions/1908605113/1. ProblemLogs 테이블에서 최소 3번 연속으로 등장하는 모든 숫자를 찾아야 한다.핵심 과제: 행과 행 사이의 관계를 파악하여, 현재 행과 다음 행, 그리고 그다음 행의 값이 모두 일치하는지 검증하는 것이다.2. Solution: 두 가지 정석 접근법① LEAD() 윈도우 함수 활용 (현대적 방식) 현재 행을 기준으로 미래의 행(1번째 뒤, 2번째 뒤)을 미리 끌어와서 한 줄에서 비교한다.② 삼중 Self Join 활용 (전통적 방식) 테이블을 세 번 불러와서(l1, l2, l3), ID가 1씩.. 2026. 2. 5. 이전 1 ··· 11 12 13 14 15 다음