inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2번 문제 풀이

조인 조건 질문드립니다

168

miji.lee

작성한 질문수 11

1

강사님 안녕하세요.

풀이에서 같은 users 테이블을 두번 inner join 하시지요. (영상 11분)

저는 다음과 같이 작성했어요. (서브쿼리 부분만 옮겨 적을게요)

FROM

    (SELECT Request_at, count(*) as total_count, SUM(CASE WHEN status = 'completed' THEN 0

            ELSE 1

            END) as cancel_count

    FROM trips AS t

    INNER JOIN users AS U

    ON t.client_id = u.users_id OR t.driver_id = u.users_id

    WHERE (t.request_at BETWEEN '2013-10-01' AND '2013-10-03') AND u.banned = 'No'

    GROUP BY request_at) sub

같이 JOIN은 한번만 하고 ON을 두번 적어줬는데 값이 다르게 나오더라고요.

user_id 중 client_id과 driver_id에 각각 매치되는 부분을 OR로 연결하면 될 것 같은데... 왜 안되는지 잘 모르겠습니다.

설명 부탁드릴게요!

sql

답변 1

1

지식공유자 J

FROM 절에서 JOIN으로 만들어지는 테이블 자체가 달라지기 때문입니다.

적어주신대로 JOIN을 하면 Trips 테이블의 ID당 2개씩의 row가 만들어지게 됩니다.  

같은 컬럼(Users의 users_id)을 client_id와 붙인 것과, driver_id와 붙인 것, 이 둘을 모두 출력해줘야 하기 때문에요.

SELECT *로 확인해보시면 차이점을 아실 수 있을 거에요!

강의기간 연장문의

0

107

2

HackerRank : Weather Observation Station 11 문제풀이

0

123

1

SET4의 3번 자리바꾸기 문제 다른 풀이

0

197

1

set 3의 3번 문제- 데이터의 개수가 짝수일 때 질문

0

276

2

set 1 - 2번 문제풀이

0

268

1

세트2번 Binary Tree Nodes 질문입니다!

0

231

2

고급문제풀이set1 3번 문제

0

255

2

고급문제풀이 3번 INNERJOIN 활용시 오류

0

274

1

회사일하다 보니까 다 못듣고 수강기간이 다끝나가는데 .,. 수강기간 연장은 어떻게 할수 있나요?ㅜㅜ

0

324

1

[Weather 20 ] 2번째 쿼리도 따라 했는데 왜 다 실패일까요?

0

382

1

[Weather 20] 따라 했는데 왜 작동 안해요?

0

283

1

weather-20 왜 작동 안하는건가요?

0

233

1

Ollivander's Inventory 윈도우 함수 min() over

0

319

1

LeetCode 626. Exchange Seats 리트코드 제출 오류

0

510

2

섹션4에 3번 문제풀이 질문

0

386

2

SQL Project Planning 풀이 관련 문의

0

589

2

섹션 1번 4번문제 풀이

1

290

1

섹션1 2번 문제풀이 강의

0

308

1

set2 - 1 같게 작성했는데 답이 이상합니다.

0

289

1

max함수를 써서 풀지는 못하나요?

0

306

1

윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?

0

265

1

(Hacker Rank)Binary Tree 문제 질문

0

329

1

쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.

0

298

1

이런 풀이는 왜 안되는지 궁금해요

0

279

1