Contents
내가 작성한 쿼리
구독 서비스에서 사용자 행동 패턴을 분석하려고 합니다. 이 회사는 7일 무료 체험판을 제공하며,
그 후 사용자는 유료 요금제에 가입하거나 해지할 수 있습니다. 솔루션을 작성하세요:
1. 무료 체험에서 유료 구독으로 전환한 사용자 찾기
2. 무료 체험 기간 동안 각 사용자의 평균 일일 활동 기간을 계산합니다(소수점 두 자리로 반올림)
3. 유료 구독 기간 동안 각 사용자의 평균 일일 활동 기간을 계산합니다(소수점 두 자리로 반올림)
user_id가 정렬한 결과 테이블을 오름차순으로 반환합니다.내가 작성한 쿼리
MySQL, Oracle
-- 무료 유료 평균 활동 기간 계산 cte
WITH cte AS (
SELECT
user_id,
ROUND(AVG(CASE WHEN activity_type = 'free_trial' THEN activity_duration END), 2) AS trial_avg_duration,
ROUND(AVG(CASE WHEN activity_type = 'paid' THEN activity_duration END), 2) AS paid_avg_duration
FROM UserActivity
GROUP BY user_id
)
SELECT *
FROM cte
WHERE paid_avg_duration IS NOT NULL -- 전환하지 않은 유저는 출력 막기
ORDER BY user_id;Share article