강의

멘토링

커뮤니티

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

l2ej님의 프로필 이미지
l2ej

작성한 질문수

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

1번, 2번, 3번 문제 풀이

2번 문제

작성

·

207

0

select distinct(city)
from station
where left(city,1) <> 'a'
or left(city,1) <> 'e'
or left(city,1) <> 'i'
or left(city,1) <> 'o'
or left(city,1) <> 'u'
or right(city,1) <> 'a'
or right(city,1) <> 'e'
or right(city,1) <> 'i'
or right(city,1) <> 'o'
or right(city,1) <> 'u'
 
저는 이렇게 쿼리를 짰는데 틀린 답이라고 나옵니다. 왜 그런걸까요?

답변 1

1

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

WHERE 절에 작성해 주신 첫 번째, 두 번째 조건의 의미를 하나씩 살펴 보면 다음과 같습니다. 

1. LEFT(city, 1) <> 'a' : city의 첫 글자가 'a'가 아닌 것, 즉 'a'를 제외한 모든 알파벳으로 시작하는 city
2. LEFT(city, 1) <> 'e' : city의 첫 글자가 'e'가 아닌 것, 즉 'e'를 제외한 모든 알파벳으로 시작하는 city  

이 두 조건을 OR로 묶으셨기 때문에 이 쿼리는 합집합을 출력합니다.
1번 조건으로 'a'로 시작하는 city를 제외했더라도 2번 조건에 'a'로 시작하는 city가 포함되고, 
이 둘의 합집합이므로 결국 'a'로 시작하는 city 또한 결과 데이터로 나오게 됩니다.

전체 쿼리를 보면 10개 조건의 합집합, 결과적으로 station 테이블에 있는 모든 city명을 출력하게 됩니다. 

l2ej님의 프로필 이미지
l2ej

작성한 질문수

질문하기