Contents
내가 작성한 쿼리
사용자의 확인율은 '확인'된 메시지의 수를 요청된 확인 메시지의 총 수로 나눈 값입니다.
확인 메시지를 요청하지 않은 사용자의 확인율은 0입니다.
확인율을 소수점 두 자리로 반올림합니다.
각 사용자의 확인률을 찾기 위한 솔루션을 작성하세요.
결과 테이블을 순서에 상관없이 반환하세요.
내가 작성한 쿼리
MySQL
SELECT
s.user_id,
ROUND(IFNULL(SUM(CASE WHEN c.action = 'confirmed' THEN 1 ELSE 0 END) / COUNT(c.action), 0), 2) AS confirmation_rate
FROM
Signups s
LEFT JOIN
Confirmations c ON s.user_id = c.user_id
GROUP BY
s.user_id;
Oracle
SELECT
s.user_id,
ROUND(NVL(SUM(CASE WHEN c.action = 'confirmed' THEN 1 ELSE 0 END) / NULLIF(COUNT(c.action), 0), 0), 2) AS confirmation_rate
FROM
Signups s
LEFT JOIN
Confirmations c ON s.user_id = c.user_id
GROUP BY
s.user_id;
차이점
차이점
NULL
처리 함수명의 차이
Oracle
에서는 나눗셈에서 0 나눗셈 방지 처리를 더 명확히NULLIF
로 해줘야 함
Share article