SQL/LeetCode

[SQL] Confirmation Rate(LeetCode/Oracle)

DBwiz 2023. 10. 29. 15:04

안녕하세요!

 

이번 포스팅은 LeetCode에 있는 Confirmation Rate 문제를 OracleDB로 풀어보려고 합니다!

 

(모든 문제는 Oracle로 풀이하겠습니다.)

 

1. 문제 링크 : https://leetcode.com/problems/confirmation-rate/description/

 

2. 문제

Column name Type
user_id int
time_stamp datetime
Column name Type
user_id int
time_stamp datetime
action ENUM
[문제] Write a solution to find the confirmation rate of each user.

각 사용자의 confirmation rate를 구하는 문제입니다.

 

3. 제출 쿼리 및 설명

 

1) SIGNUPS 테이블과 CONFIRMATIONS 테이블을 LEFT JOIN 해서 사용자 아이디와 ACTION이 'confirmed'인 수를 조회합니다.

 

SELECT S.USER_ID, 
CASE 
  WHEN ACTION = 'confirmed' THEN 1
  ELSE 0 END AS P
FROM SIGNUPS S, CONFIRMATIONS C
WHERE S.USER_ID = C.USER_ID(+)

 최종) 1번 쿼리에서 구한 P에 대한 각 사용자별 평균을 조회합니다.

SELECT USER_ID, ROUND(AVG(P), 2) AS CONFIRMATION_RATE
FROM (
  SELECT S.USER_ID, 
    CASE 
      WHEN ACTION = 'confirmed' THEN 1
      ELSE 0 END AS P
  FROM SIGNUPS S, CONFIRMATIONS C
  WHERE S.USER_ID = C.USER_ID(+)
)
GROUP BY USER_ID
;