작성
·
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 를 주면 그 에러는 해결될겁니다 :)
감사합니다 ^^