[SQL] 비율을 구했는데 결과가 0이라면

Unit·2025년 4월 27일

SQL

목록 보기
8/59

비율을 계산했는데,
쿼리는 문제 없어 보이는데 결과가 전부 0으로 나왔던 적 있으신가요?

예를 들어, 전체 사용자 중 몇 명이 구매로 전환되었는지를 계산한다고 할 때 :


❌ 문제 상황

SELECT 
    COUNT(DISTINCT CASE action WHEN 'purchase' THEN user_id END) 
    / COUNT(DISTINCT user_id) AS conversion_rate
FROM user_journey;

쿼리 자체는 틀리지 않았지만,
전환율이 0 또는 1로만 나오는 현상이 발생할 수 있습니다.

이유는 간단합니다.
COUNT() 함수는 정수 값을 반환하므로,
정수 ÷ 정수 = 정수 계산이 되어
소수점 이하가 사라지고 전환율이 정확하게 계산되지 않습니다.


✅ 해결 방법 : 실수형으로 변환

-- 방법 1 : * 1.0을 곱해 실수 유도
SELECT 
    COUNT(DISTINCT CASE action WHEN 'purchase' THEN user_id END) * 1.0
    / COUNT(DISTINCT user_id) AS conversion_rate
FROM user_journey;

-- 방법 2 : CAST로 명시적 변환
SELECT 
    CAST(COUNT(DISTINCT CASE action WHEN 'purchase' THEN user_id END) AS FLOAT)
    / COUNT(DISTINCT user_id) AS conversion_rate
FROM user_journey;

이렇게 실수형으로 변환하면
0.23, 0.58처럼 전환율이 정확하게 계산됩니다.


정리

✔️ 정수끼리 나누면 소수점이 사라져 비율이 0으로 나올 수 있습니다.
✔️ * 1.0 또는 CAST()로 실수형 변환하면 원하는 결과를 얻을 수 있습니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글