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
;