프로그래밍/MySQL

[MySQL] SQL ZOO Nested SELECT Quiz

모영이 2021. 3. 12. 15:24

 

Nested SELECT Quiz - SQLZOO

 

sqlzoo.net

1. 서브쿼리 ALL의 사용

ALL은 모든 값을 만족 시켜야 참이다. 

같은 지역중 인구가 가장 적은 데이터에 접근한다.

 

2. 서브쿼리 ALL의 사용

이전 문제랑 똑같다.

 

3. 서브쿼리 ALL의 사용, 나눗셈 연산, != 사용

같은 지역이지만, 자기 자신과 비교하면 안된다.

ALL에 같은 지역, 같은 나라가 포함된다면 Less를 만족할 수 없다.

왜냐면 A와 A 나라는 인구수가 같기 때문에 < 연산을 만족할 수 없기 때문이다.

하지만 선택형이기 때문에 여기까지 생각할 필요는 없고 비교와 나누기 연산만 주의해서 선택하면 된다.

 

4. 서브쿼리의 두번 사용

영국의 지역은 유럽이고, 유럽내의 포함된 나라 이름과

영국의 인구수보다 높은 나라를 표시하면 된다.

검색을 해보니 영국은 유럽연합을 탈퇴했다.

하지만 지역은 유럽이 맞는 것 같다.

 

5. 서브쿼리 사용, MAX의 사용

MAX는 집계함수로, 선택된 값 중 최댓값을 찾는다.

5번 답은 오답인데, 모든 gdp값 보다 큰 값을 표시하는 듯한 내용이다. 

하지만 NULL값을 제거해야 하는데 gdp <> NULL을 해줬다.

<>은 != 이거랑 같은 뜻인데 gdp != NULL은 언뜻보면 되는 것 같기도 하지만 절대 안된다.

NULL 연산은 IS로 해야하기 때문에 gdp IS NOT NULL이렇게 해주어야 한다.

이렇게 고치면 정답이 될 수 있다. 

 

6. 서브쿼리 두번 사용

직관적으로

러시아보다 인구가 작고, 덴마크보다 인구가 큰 나라

 

7. 서브쿼리 사용, MAX 사용

유럽의 최대 인구수 보다 많은 북 아시아 지역의 나라를 표시

MAX를 썼는데 왜 ALL을 사용했는지 모르겠다.

헷갈리라고 낸게 아닐까 싶다.

참고로 이 답은 테스트해볼 수가 없어서 구글에 인구수를 쳐봐서 확인해봤다.

일단 중국,브라질,프랑스는 북 아시아가 아니기 때문에 제외시키면 A와 B가 남는데

B에 인도가 있으니깐 B를 골랐다.

 

문제를 풀면서 모르는게 너무 많다는 것을 느꼈다.

태어난 채로 알 수 있는 것들은 그렇게 많지 않다.

숨쉬는 법, 눈 깜박이는 법, 자는 법 이런 것들 빼고는 전부 배워야 알 수 있는 것들이다. 

배워야 알 수 있는 것들은 배우지 못 하면 알 수 없는 것들이다.

만약 배우지 못 했다면 모르는게 당연하다. 

모르는 것을 모르는 채로 놔두는거나, 배우거나 이건 선택이라고 생각한다.

공대생에게 경제학 이론을 배우라고 강요할 필요가 없다. 문과생에게 컴퓨터 이론을 배우라고 강요할 필요가 없다.

사람들이 공통적으로 아는 지식을 상식이라고 한다. 요즘 유튜브나 미디어를 보면 상식이 없는 사람들을 무시하는 댓글들이 많다. 잘모르는 지식을 아는체 하는 것하고 잘못된 지식을 착각하는 것을 꼬집는 것은 옳다고 생각한다. 왜냐하면 그것 때문에 피해가 발생할 수 있기 때문이다. 하지만 모른다고 말하는 것을 꼬집는 것은 옳지 않다고 생각한다. 

모르는 것은 잘못이 아니다.

그리고 모른채로 두는 것도 잘못이 아니다.

자신이 필요하다고 느낄 때 배우면 된다.

앞으로 더 배울 거다. 힘내자!