• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

4set 2번 문제

21.04.01 20:00 작성 조회수 82

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'의 데이터는 포함되지 않습니다.