본인은 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"
'DataBase > MySQL' 카테고리의 다른 글
[SQL] 문자열 자르기 함수 LEFT(s, n) (0) | 2022.11.15 |
---|---|
[MySQL] Trigger Insert 테이블 (0) | 2022.11.15 |
[SQL] 반올림 함수 ROUND(a, b) 2 (2) | 2022.10.29 |
[SQL] 반올림 함수 ROUND(a, b) (0) | 2022.10.21 |
[MySQL] 특정 테이블에 있는 컬럼명 조회 (0) | 2022.09.21 |