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

HK님의 프로필 이미지
HK

작성한 질문수

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

4set 2번 문제

작성

·

147

2

4set 2번 문제 설명해주신 방법이 더 효율적인 건 알겠습니다.

저는 서브쿼리 2개써서 조인 하는 방식으로 풀어봤는데 뭐가 잘못된건 에러가뜨는데 잘 모르겠습니다.

Users_id 조인할 때 어느 부분이 문제인가요?

Duplicate column name 'Users_Id'

select 

A.request_at as Day

,(select round(count(b.id)/count(A.id),2)) as 'Cancellation Rate'

from 

(

select *

from Trips T

inner join users UC on T.client_id = UC.users_id 

inner join users UD on T.driver_id = UD.users_id 

where UC.banned = 'NO'

and UD.banned = 'NO'

and request_at between '2013-10-01' and '2013-10-03'

) A

left join 

(

select *

from Trips T

inner join users UC on T.client_id = UC.users_id

inner join users UD on T.driver_id = UD.users_id 

where UC.banned = 'NO'

and UD.banned = 'NO'

and request_at between '2013-10-01' and '2013-10-03'

and status like 'cancelled%'

) B on a.id = b.id

group by A.request_at

답변 1

1

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

에러 메시지는 'user_id' 라는 컬럼이 중복되었다는 메시지로

users를 여러 번 조인하면서, 각 테이블에 user_id가 들어있어 생기는 문제로 보입니다.

서브쿼리에 SELECT * 말고, 필요한 컬럼만 명시하고 Alias 를 주면 그 에러는 해결될겁니다 :)

감사합니다 ^^

HK님의 프로필 이미지
HK

작성한 질문수

질문하기