문제
- LeetCode SQL 문제
1934. Confirmation Rate / Medium
- 문제 내용 : [링크]
내가 작성한 Query
select s.user_id , round(sum(case when c.action = 'confirmed' then 1 else 0 end )/ count(*), 2) as confirmation_rate from signups s left join confirmations c on s.user_id = c.user_id group by s.user_id
signups
테이블과 confirmations
테이블을 LEFT JOIN
을 통해 연결해준다.
(REQUEST가 없던 계정에 대한 정보도 출력을 해야 하기 때문에 LEFT JOIN
을 해준다.)
user_id
별 집계데이터를 출력해야 하므로, GROUP BY
를 통해 user_id
별로 그룹핑해준다.
CASE WHEN THEN
구문을 통해 action
값이 'confirmed' 인 경우 1, 아니면 0으로 처리한 후 SUM()
함수를 통해 합계를 구해주고, 그 값을 데이터의 개수(count(*)
)로 나누어 'confirmation_rate' 값을 구해준다.
정리 : 'confirmation_rate'에 대한 정의만 잘 이해하면 쉽게 풀 수 있었다. CASE WHEN THEN
구문을 통해 confirmed 된 데이터 개수 합을 구하는 방법을 이용했다.