본문 바로가기

Data Science/SQL86

[SQL/실전] 이탈 위기 고객 탐지: CTE와 윈도우 함수 활용 상태 분석 (Leetcode3716 Medium) 3716. Find Churn Risk Customers Find Churn Risk Customers - LeetCodeCan you solve this real interview question? Find Churn Risk Customers - Table: subscription_events +------------------+---------+ | Column Name | Type | +------------------+---------+ | event_id | int | | user_id | int | | event_date | date | | event_typeleetcode.com 1. Problem단순히 구독을 해지한 사람이 아니라, 해지 징후가 보이는 '위험 고객'을 다음 4가지 기준으로.. 2026. 2. 20.
[SQL/오답] 골든아워 고객 찾기: 다중 조건 집계와 시간대 필터링 TIME함수 (Leetcode3705 Medium) 3705. Find Golden Hour Customers1. Problem 피크 타임에 자주 주문하고 높은 만족도를 보이는 '골든 아워 고객'을 추출해야 한다.조건 1: 최소 주문 횟수 3회 이상이다.조건 2: 전체 주문 중 60% 이상이 피크 타임(11-14시 또는 18-21시)에 발생해야 한다.조건 3: 평균 평점이 4.0 이상이어야 한다.조건 4: 전체 주문의 50% 이상에 대해 리뷰(평점)를 남겼어야 한다.결과: 평균 평점 내림차순, 고객 ID 내림차순으로 정렬한다.2. Solution: 집계 함수와 HAVING 절을 활용한 원스톱 필터링TIME() 함수로 시각만 추출한 뒤, AVG(CASE...) 패턴을 사용하여 비율을 계산하고 HAVING 절에서 모든 조건을 검증한다.3. Takeaway: .. 2026. 2. 19.
[SQL/오답] 평점 양극화 분석: 집계 함수와 HAVING 절의 제약 사항 (Leetcode3642 Medium) [SQL/실전] 평점 양극화 분석: 집계 함수와 HAVING 절의 제약 사항3642. Find Books with Polarized Opinionshttps://leetcode.com/problems/find-books-with-polarized-opinions/1. Problem독자들 사이에서 호불호가 극명하게 갈리는 '양극화된 도서'를 찾아야 한다.조건 1: 최소 5개 이상의 독서 세션이 존재해야 한다.조건 2: 4점 이상(고평점)과 2점 이하(저평점)가 각각 최소 하나 이상 존재해야 한다.조건 3: 전체 세션 중 극단적 평점(≤2 또는 ≥4)의 비율인 '양극화 점수'가 0.6 이상이어야 한다.결과: 양극화 점수 내림차순, 제목 내림차순으로 정렬한다.2. Solution: 서브쿼리를 활용한 단계적 필.. 2026. 2. 19.
[SQL/풀이] 상/하반기 연비 비교: 단순 집계를 넘어선 성과 분석 (LeetCode3601 Medium) https://leetcode.com/problems/find-drivers-with-improved-fuel-efficiency/1. Problem운전자별로 상반기(1~6월)와 하반기(7~12월)의 평균 연비를 비교하여, 연비가 개선된 운전자를 찾아야 한다. 단순히 전체 평균을 내는 것이 아니라 트립별 연비를 먼저 계산한 후 그 값들의 평균을 구해야 하며, 두 기간 모두 주행 기록이 있는 운전자만을 선별해 개선 폭이 큰 순서대로 나열하는 것이 핵심이다.2. Solution상반기와 하반기의 데이터를 독립적으로 집계하기 위해 WITH 절(CTE)을 활용한다. 각 기간에 대한 평균 연비 테이블을 각각 생성한 뒤, INNER JOIN을 통해 두 기간 모두 실적이 존재하는 운전자만 남기고 연비 개선 수치를 계산.. 2026. 2. 18.
[SQL/오답] 시계열 데이터의 선후 관계: COVID-19 회복 기간 분석 (Leetcode3586 Medium) 시계열 데이터의 선후 관계: COVID-19 회복 기간 분석3586. Find COVID Recovery Patients 1. Problem환자별 COVID-19 테스트 기록에서 '최초 양성 판정' 이후 **'첫 번째 음성 판정'**이 나오기까지 걸린 시간(Recovery Time)을 계산해야 한다. 단순히 최소/최대 날짜를 구하는 것이 아니라, 특정 사건(양성)이 발생한 이후의 시점만을 필터링하여 추적하는 것이 이 문제의 핵심이다.2. Solution양성 판정 시점을 먼저 확정 짓는 CTE와, 그 시점 이후의 음성 기록만 필터링하는 CTE를 분리하여 설계한다. 사건의 순서가 명확해야 하므로 JOIN 조건에 날짜 비교(>)를 포함하여 논리적 선후 관계를 정립한다.3. Takeaway (핵심 통계 논리)시.. 2026. 2. 18.
[SQL/오답] 최신 성과 분석: 윈도우 함수 ROW_NUMBER와 Self Join으로 성적 우수자 찾기 (Leetcode3580 Medium) 3580. Find Consistently Improving Employeeshttps://leetcode.com/problems/find-consistently-improving-employees/description/1. Problem최근 3번의 성과 리뷰에서 **성적이 지속적으로 상승(Strictly Increasing)**한 직원을 찾아야 한다.조건 1: 리뷰가 최소 3개 이상인 직원만 대상이다.조건 2: 가장 최근 날짜 기준 3개의 리뷰를 분석한다.조건 3: 성적이 최신(1) > 직전(2) > 그 직전(3) 순으로 반드시 엄격하게 상승해야 한다.결과: 최신 성적 - 3번째 전 성적을 개선 점수로 계산하여 내림차순 정렬한다.2. Solution: 최신 데이터 번호 매기기 후 수평 비교ROW_NUM.. 2026. 2. 18.