관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

서브쿼리 심화 8 - 미션 문제 풀기 및 단원 마무리하기 본문

알고리즘 및 자료 관리/SQL

서브쿼리 심화 8 - 미션 문제 풀기 및 단원 마무리하기

huenuri 2024. 10. 24. 05:19

이제 마지막으로 미션 문제를 풀어보려고 한다.


 

 

 

미션 1 - 매출 비교

 

 


 

 

 

1. 테이블 조회하기

 

 

이 정보 중에서 가게 위치가 ‘남부’에 속해있는 모든 가게의 매출액보다 높은 매출액을 가진 가게에 대해서 서브쿼리와 ALL을 이용을 해 쿼리를 작성해 볼 것이다.


 

 

 

2.  가게 지역이 ‘남부’ 인 가게들의 매출액을 조회


 

 

 

3. 남부 지역의 모든 가게보다 매출이 높은 가게 조회하기

 

 

 

2번 문제는 틀렸다. 그 이유는 분석해 보니 문제에서 요구하는 내용을 모두 출력하지 않고 하나만 출력했던 게 문제였다.


 

 

 

4. 코드 수정해보기

 

 

 

문제를 잘 맞혔다. 이제 2번도 풀어볼 것이다.


 

 

 

 

 

미션 2 - 없는 물건 구하기

 

 


 

 

 

1. 테이블 조회하기

 

 

이제 각 테이블의 정보를 이용하여, 엘리스 마트에서 재고가 0인 품목들 중 창고에는 재고가 1개 이상으로 존재하는 상품의 정보를 조회할 것이다.


 

 

 

2. ELICE_MART테이블에서 재고가 0인 상품의 상품 ID, 상품 이름을 조회

 

 

엘리스 마트에서 재고가 0인 테이블이 모두 조회되었다. 


 

 

 

3. PRODUCT 테이블에서 재고가 1 이상인 상품 ID, 상품 이름에 포함되는 상품에 대해 상품 ID, 상품 이름을 조회

 

 

하지만 무슨 오류가 뜨는데 어떻게 해결할 수 있을까? 피연산자에는 1개의 열이 포함되어야 한다는 뜻이다. 오류가 발생하는 이유는 서브쿼리의 결과를 잘못 사용하고 있기 때문이다.

서브쿼리에서 반환된 값은 product_id product_name 컬럼이기 때문에, 이를 직접 조건으로 사용할 수 없다. 대신, 서브쿼리가 포함된 WHERE 조건을 올바르게 작성해야 한다.


 

 

 

4. 코드 수정해 보기

 

 

 

이제 문제의 조건에 맞는 테이블이 잘 조회되었다.


 

 

 

 

미션 3 -  명단과 부서

 

 


 

 

 

1. 테이블 조회하기

 

 

두 개의 테이블에 대해서 INNER JOIN을 활용하여 직원 ID, 직원 이름, 급여, 부서 ID, 부서 이름 정보를 가지는 EMPLOYEE_DEPARTMENT 이름의 뷰를 만들어 볼 것이다.


 

 

 

2.  INNER JOIN으로 직원 ID, 직원 이름, 급여, 부서 ID, 부서 이름 정보를 가져오기

 

 

이제 뷰를 만들고 조회해 볼 것이다.


 

 

 

3. EMPLOYEE_DEPARTMENT 이름의 뷰를 만들고 조회하기

 

 

하지만 무슨 오류가 떴다. 오류의 원인은 세미콜론을 붙여주지 않은 거였다. 원래 하나의 문단이 끝난 다음에 붙이지만 뷰에서는 생성할 때도 붙이고 조회할 때도 붙이게 된다.


 

 

 

4. 오류 수정해 보기

 

 

 

이렇게 모든 미션 문제를 잘 풀었다.


 

 

 

 

 

3장을 닫으며

 


 

 

 

 

 

 

 


 

 

 

학습을 마치고

5시가 조금 넘었지만 그래도 목표한 대로 미션을 잘 수행했다. 문제를 풀면서 내가 이해력이 결코 부족하지 않으며 개발 공부하기에 적당한 머리도 집중력도 있다는 걸 느꼈다. 

이제 오늘은 4주 차의 마지막 공부를 향해 열심히 달려가볼 것이다.