• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

2번 문제

22.01.17 00:56 작성 조회수 127

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

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명을 출력하게 됩니다.