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

l2ej님의 프로필 이미지

작성한 질문수

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

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

2번 문제

22.01.17 00:56 작성

·

185

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
지식공유자

2022. 01. 19. 12:57

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님의 프로필 이미지

작성한 질문수

질문하기