작성
·
121
1
안녕하세요.
아래 쿼리와 같이 SUM(CASE WHEN Status != 'completed'가 아닌
SUM(CASE WHEN Status = 'cancelled_by_driver ' 를 하면 틀린 답이라고 나옵니다.
같은 내용인거 같은데 왜 틀린지를 모르겠네요 ㅠ 확인해 주시면 감사하겠습니다.
SELECT Day, ROUND(rate/total,2) AS `Cancellation Rate`
FROM (
SELECT a.Request_at AS Day
, SUM(CASE WHEN Status = 'cancelled_by_driver ' THEN 1 ELSE 0 END) AS rate
, COUNT(*) as total
FROM Trips a
INNER JOIN Users uc ON a.Client_Id = uc.Users_Id
INNER JOIN Users ud ON a.Driver_Id = ud.Users_Id
WHERE a.Request_at BETWEEN '2013-10-01' AND '2013-10-03'
AND uc.Banned = 'No'
AND ud.Banned = 'No'
GROUP BY 1
) t
답변 1
1
Status의 값은 'completed', 'cancelled_by_driver', 'cancelled_by_client' 이렇게 3가지가 있습니다.
취소율을 구하려면 드라이버에 의한 취소 건과 클라이언트에 의한 취소 건을 모두 포함해야 하는데,
작성하신 것처럼 CASE WHEN Status = 'cancelled_by_driver' 라고 하면 'cancelled_by_client'의 데이터는 포함되지 않습니다.