inflearn logo
강의

Course

Instructor

SQL data analysis learned through various cases

Extract related products by customer by order using SQL - 02

"주문별 고객별 연관 상품 추출 SQL로 구하기-02" 수업 질문

52

damuri15065

1 asked

0

강사님 안녕하세요 WITH절로 조인하셨을때

아래와 같이 WHERE절에서 product_id를

비교했을때와 조인조건으로 넣었을때 같은 실행계획과 성능이 나오는것 같은데

둘다 맞다고 봐도 되나요?

조인조건에 있는 것과 where조건에 있는 것이

어떤 차이가 있는지 잘 모르겠어서요!

[궁금한 사항]

jointemp_00bona.user_id = b.user_idanda.product_id != b.product_id

--where a.product_id != b.product_id

 

[전체쿼리]

with

temp_00as (

selectb.user_id , a.order_id , a.product_id

fromorder_itemsa

joinordersbona.order_id = b.order_id

),

temp_01as (

selecta.user_id ,a.product_idasprod_01 , b.product_idasprod_02

fromtemp_00a

jointemp_00bona.user_id = b.user_idanda.product_id != b.product_id

--where a.product_id != b.product_id

)

selectcount(*) fromtemp_01

sql postgresql dbms/rdbms 데이터-엔지니어링 data-analysis

Answer 2

1

dooleyz3525

안녕하십니까

ANSI SQL에서는 조인절에는 명확하게 조인의 조건만 나열해 주는게 좋습니다. 조인은 테이블과 테이블 간을 조인 조건으로 연결하는 것입니다. 아래 쿼리에서 조인 조건, 즉 연결 조건은 a.user_id = b.user_id 입니다. a.product_id != b.product_id 는 조인 조건이 아닙니다. 조인이 된 다음에 조인 결과 데이터를 필터링(where 조건으로 거르는) 조건입니다. join 절에 a.product_id != b.product_id라고 적어도 이는 DBMS가 잘 알아서 조인 조건으로 실행 계획을 세우지 않고 필터링 조건으로 실행 계획을 세우기 때문에 두개의 실행 계획이 동일하게 나올 것입니다.

요약하자면, SQL 작성 시 조인절에는 조인의 조건이, Where 절에는 필터링 조건이 오도록 SQL을 명확히 작성하는 것이 바람직 합니다.

감사합니다.

0

damuri15065

감사합니다~!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 박준현님이 궁금해하신 주제는 SQL에서 조인 조건과 필터 조건(WHERE절)의 차이점에 대한 것입니다. 비슷한 주제를 다루고 있는 유사 질문과 답변을 공유 드립니다.

조인 조건과 WHERE 절의 차이

  • 조인 조건: 두 테이블 간에 관계를 설정하기 위해 사용됩니다. 주로 두 테이블에서 일치하는 행을 결합할 때 사용하는 조건을 지정합니다.
  • WHERE 절: 쿼리 결과를 필터링하기 위한 조건을 설정합니다. 이 절은 조인 조건 이후에 작동하여 일치하지 않거나 불필요한 데이터를 필터링합니다.

SQL 실행 계획에서 조인 조건과 WHERE 조건이 별도의 역할을 하지만, 쿼리에 따라서 유사한 결과를 만들 수 있습니다. 성능 측면의 차이는 데이터의 구조와 인덱스 유무에 따라 달라질 수 있습니다.

유사한 답변 참고하기

아래의 게시물 URL은 조인 관련 성능이나 조건 설정에 대한 질문과 답변을 담고 있습니다. 강사님의 답변을 통해 추가적인 이해를 도울 수 있을 것입니다:
- 주문별 연관상품 추출 SQL 관련 문의

강사님께서 설명하신 내용에 따르면, 조인 조건과 WHERE 절 중 필터링 역할에 더 적합한 것은 WHERE 절이며, 조인 절에서의 복잡한 조건은 성능에 영향을 줄 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

쿼리 질문있습니다!!

0

49

2

없는강의요청해도됩니까,,

0

90

2

아래와 동일한 질문에 대한 추가질문입니다

0

70

2

cnt/max로 구한 결과의 차이

0

100

2

쿼리에 대한 질문이 있습니다.

0

116

2

퍼널 질문드립니다.

0

113

1

ADSP자격증

0

282

2

특정 스키마에서 생성한 편집기의 쿼리를 판다스에 삽입하는 방법

0

161

1

백업파일 테이블 생성 오류

0

235

1

"사용자별 특정 상품 주문시 함께 가장 많이 주문된 다른 상품 추출하기"에서 조건관련..

0

161

1

Plotly을 이용해 treemap시각화시 공유사항

0

277

2

월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 수업 중 질문이 있습니다.

0

248

1

with 절 질문

0

240

1

데이터 분석 SQL Fundamentals 강의 할인 문의

0

215

1

리텐션 구하는 방법 문의

0

215

1

캐글데이터 Postgresql 사용

0

355

2

mau 구할때 group by 사용안해도 count 집계함수가 왜 가능한지 모르겠습니다.

0

262

1

매출분석 1에서 partition by와 group by의 차이

0

355

1

postgres 설치 오류

0

318

1

맥 계정에서 postgres 접속 시 비밀번호 입력 실패현상

1

542

2

pandas 연계시 오류.....

0

1242

3

시각화 그래프가 안보여요

0

299

1

ntile 정규분포에 관하여 ... 향후 일을 하게 될 시

0

358

1

사용자별 월별 세션 접속 횟수의 구간별 분포 집계 SQL - where절

0

393

1