SQL/리트코드 문제풀이

[LeetCode] 1934. Confirmation Rate

너지살 2024. 5. 23. 16:20

 

 

 

문제 출저

https://leetcode.com/problems/confirmation-rate/?envType=study-plan-v2&envId=top-sql-50

 

 

 

문제 풀이

각 유저의 확인 비율을 구해야 합니다. 확인 비율은 확인(confirmed) / 전체 메일 입니다. 

 

모든 유저를 나타내기 위해서 left join을 합니다. 

Singups, Confirmations 조인하여 user_id로 그룹화 합니다. 

집계함수 sum과 조건문 if를 이용하여 confirmed의 갯수를 구합니다.

count를 통해 전체 갯수를 구합니다.

round를 통해 소수점 2자리를 표시하도록 합니다. 

 

 

 

SQL

select 
    s.user_id,
    round(sum(if(c.action = 'confirmed', 1, 0)) / count(*), 2)
    as confirmation_rate
from
    signups as s 
left join 
    confirmations as c on s.user_id = c.user_id
group by 
    s.user_id 





-- with confirmedaction as (
--     select 
--         s.user_id,
--         count(c.user_id) as count 
--     from
--         Signups as s
--     left join
--         Confirmations as c on s.user_id = c.user_id 
--         and c.action = 'confirmed'
--     group by
--         s.user_id
-- ),

-- allaction as (
--     select 
--         s.user_id,
--         count(s.user_id) as count 
--     from
--         Signups as s
--     left join  
--         Confirmations as c on s.user_id = c.user_id 
--     group by
--         s.user_id 
-- )

-- select 
--     c.user_id,
--     round(c.count / a.count, 2) as confirmation_rate 
-- from
--     confirmedaction as c
-- join
--     allaction as a on c.user_id = a.user_id