[SQL] XOR(but no both)를 활용한 조회

반응형

본인은 SQL 연습이 필요성을 느껴
간단한 SQL 작성 및 테스트 하기 위해서관련 사이트를 찾고 있던 중 이 사이트를 발견해 연습을 해보는 중이다

* url :https://sqlzoo.net/wiki/SELECT_from_WORLD_Tutorial

 

SELECT from WORLD Tutorial - SQLZOO

namecontinentarea populationgdp AfghanistanAsia6522302550010020343000000 AlbaniaEurope28748 2831741 12960000000 AlgeriaAfrica2381741 37100000 188681000000 AndorraEurope46878115 3712000000 AngolaAfrica1246700 20609294 100990000000 ... In this tutorial you w

sqlzoo.net

 

1. 문제

 

2. 문제 풀이 과정

첨부된 사진의 문제는 위의 링크 걸어둔 사이트에서 SELECT from WORLD Tutorial 8번 문제이다.

본 문제는 Exclusive OR인 XOR를 활용하여 밑에 조건을 만족하도록 해당 쿼리 결과를 얻어오라고 적혀있다.

 

* 조건

: 3 million 보다 큰 면적은 가진 국가 혹은 250 million보다 많은 인구를 가진 국가이지만 둘 다 만족해서는 안 된다.

 

* XOR 연산

- XOR = Exclusive OR로 배타적 논리합이라고 부름.

- Java에서는 ^의 기호를 사용한다.

OR 연산

더보기
OR 연산
입력값 결과값
0 0 0
0 1 1
1 0 1
1 1 1

 

 

 XOR 연산

더보기
XOR 연산
입력값 결과값
0 1 0
0 1 1
1 0 1
1 1 0

- OR 연산과 비슷하지만 XOR은 두 개의 피연산자를 받아 둘 중 하나가 1일 때 1을 반환한다.

  XOR의 성질로 입력값을 반전 시켜 변경된 값을 OR로 계산한다는 것이다.

 

예제1) 피연산자로 입력값이 1,1 로 들어왔을 때

    1) 첫 번째 피연산자 1를 반전 시킴 : 1 -> 0

    2) 두 번째 피연산자 1를 반전 시킴 : 1 -> 0

    3) 1) + 2) 에서 반전 시킨 연산자를 OR 연산자로 계산 : 0 OR 0 = 0

+ 이때 OR 연산자는 1이 무조건 하나 이상 있어야 결과값이 1이 나오는 걸 알고 있어야 한다.

 

예제2) 피연산자로 입력값이 0,1 로 들어왔을 때

    1) 첫 번째 피연산자 0를 반전 시킴 : 0 -> 1

    2) 두 번째 피연산자 1를 반전 시킴 : 1 -> 0

    3) 1) + 2) 에서 반전 시킨 연산자를 OR 연산자로 계산 : 1 OR 0 = 1

 

문제 풀이 

더보기

select name, population, area
from world
where (population > 250000000 AND (NOT area > 3000000)) or ((NOT population > 250000000) AND area > 3000000)

 

 

3. 결과             "SUCCESS"

반응형