안녕하세요!
이번 포스팅은 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
;
'SQL > LeetCode' 카테고리의 다른 글
| [SQL] Count Salary Categories(LeetCode/Oracle) (0) | 2023.10.29 |
|---|---|
| [SQL] The Latest Login in 2020(LeetCode/Oracle) (0) | 2023.10.29 |
| [SQL] Calculate Special Bonus(LeetCode/Oracle) (0) | 2023.10.29 |
| [SQL] Rearrange Products Table(LeetCode/Oracle) (0) | 2023.10.29 |
| [SQL] Primary Department for Each Employee(LeetCode/Oracle) (1) | 2023.10.29 |