인프런 커뮤니티 질문&답변

Sumg-Jun Hur님의 프로필 이미지
Sumg-Jun Hur

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이

4set 2번 문제

작성

·

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

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

Status의 값은 'completed', 'cancelled_by_driver', 'cancelled_by_client' 이렇게 3가지가 있습니다.

취소율을 구하려면 드라이버에 의한 취소 건과 클라이언트에 의한 취소 건을 모두 포함해야 하는데,

작성하신 것처럼 CASE WHEN Status = 'cancelled_by_driver' 라고 하면 'cancelled_by_client'의 데이터는 포함되지 않습니다. 

Sumg-Jun Hur님의 프로필 이미지
Sumg-Jun Hur

작성한 질문수

질문하기