SQL - 문제 미리보기

문제 1666

medium
다음 Self Join 쿼리의 실행 결과는? ```sql -- 고객 데이터: (1, Alice, Berlin), (2, Bob, Berlin), (3, Charlie, Paris) SELECT A.CustomerName, B.CustomerName, A.City FROM Customers A, Customers B WHERE A.CustomerID < B.CustomerID AND A.City = B.City; ```
A. Alice-Bob (Berlin), Bob-Alice (Berlin)
B. Alice-Bob (Berlin)만 출력
C. Alice-Alice (Berlin), Bob-Bob (Berlin), Charlie-Charlie (Paris)
D. 결과 없음

정답: B

조건별 분석: 조건 1: `A.CustomerID < B.CustomerID` • 순서 제한: A의 ID가 B보다 작은 경우만 • 중복 방지: 같은 조합이 두 번 나오는 것을 방지 • 효과: Alice-Bob은 포함, Bob-Alice는 제외 조건 2: `A.City = B.City` • 같은 도시: 도시가 동일한 고객들만 • Berlin: Alice(ID=1), Bob(ID=2) → 같은 도시 • Paris: Charlie(ID=3) → 혼자만 있음 단계별 실행: 1단계: 모든 조합 생성 ```txt A(Alice,1,Berlin) - B(Alice,1,Berlin) A(Alice,1,Berlin) - B(Bob,2,Berlin) A(Alice,1,Berlin) - B(Charlie,3,Paris) A(Bob,2,Berlin) - B(Alice,1,Berlin) A(Bob,2,Berlin) - B(Bob,2,Berlin) A(Bob,2,Berlin) - B(Charlie,3,Paris) A(Charlie,3,Paris) - B(Alice,1,Berlin) A(Charlie,3,Paris) - B(Bob,2,Berlin) A(Charlie,3,Paris) - B(Charlie,3,Paris) ``` 2단계: A.CustomerID < B.CustomerID 적용 ```txt A(Alice,1,Berlin) - B(Bob,2,Berlin) ✓ (1 < 2) A(Alice,1,Berlin) - B(Charlie,3,Paris) ✓ (1 < 3) A(Bob,2,Berlin) - B(Charlie,3,Paris) ✓ (2 < 3) ``` 3단계: A.City = B.City 적용 ```txt A(Alice,1,Berlin) - B(Bob,2,Berlin) ✓ (Berlin = Berlin) A(Alice,1,Berlin) - B(Charlie,3,Paris) ✗ (Berlin ≠ Paris) A(Bob,2,Berlin) - B(Charlie,3,Paris) ✗ (Berlin ≠ Paris) ``` 최종 결과: ```txt CustomerName1 | CustomerName2 | City Alice | Bob | Berlin ```

💡 학습 팁

이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.