SQL 다중행 서브쿼리로 복잡한 데이터 검색 간편하게 하기


1. 핵심 원리
서브쿼리(Subquery)는 특정 값에 대한 조건을 메인 쿼리 내에서 참조하기 위해 사용됩니다. 이 경우, 단일행 서브쿼리와 다중행 서브쿼리로 구분되며, 다중행 서브쿼리는 서브쿼리 결과가 여러 개의 행을 반환할 때 사용됩니다.

2. 실무에서 쓰이는 이유
다중행 서브쿼리는 복수의 값을 비교하거나, 집합 연산을 수행할 때 실무에서 자주 활용됩니다. 예를 들어, 여러 직책을 가진 직원들의 급여를 비교하거나 특정 부서의 평균 급여보다 높은 직원들을 찾는 작업 등에 사용됩니다.

3. 실무에서 구체적으로 사용되는 상황 예측

  • 특정 직책을 가진 직원들과 같은 급여를 받는 직원들을 검색할 때.
  • 특정 제품의 가격과 동일한 가격을 가진 다른 제품들을 검색할 때.
  • 특정 고객의 구매 이력과 동일한 조건을 가진 다른 고객들을 찾을 때.

4. 자주 사용되는 윈도우 표시 및 설명
이번에 학습한 서브쿼리와 관련된 자주 사용하는 윈도우 함수는 RANK()DENSE_RANK()입니다. 이 함수들은 다중행 서브쿼리와 함께 사용할 수 있으며, 특정 조건에 따라 순위를 매기거나, 동일한 순위의 행을 그룹화할 때 유용합니다.

SQL 코드 예시:

SELECT ename, sal
FROM (
    SELECT ename, sal, RANK() OVER (ORDER BY sal DESC) as rnk
    FROM emp
) 
WHERE rnk = 1;

5. 연습 문제
직업이 SALES인 사원들과 동일한 급여를 받는 사원들의 이름과 급여를 출력하는 SQL 쿼리를 작성하시오.

6. 연습 문제 해답 및 테이블 표시

SELECT ename, sal
FROM emp
WHERE sal IN (SELECT sal FROM emp WHERE job='SALES');
ENAMESAL
MARTIN1250
WARD1250
ALLEN1600
TURNER1500

7. 응용 문제
특정 부서에서 평균 급여보다 낮은 급여를 받는 직원들의 이름과 급여를 검색하는 SQL 쿼리를 작성하시오.

8. 응용 문제 해답 및 테이블 표시

SELECT ename, sal
FROM emp
WHERE sal < (SELECT AVG(sal) FROM emp WHERE deptno = 10);
ENAMESAL
CLARK2450
MILLER1300

9. 전자상거래 업계에서 쓰일 수 있는 경우 예측
전자상거래 업계에서 다중행 서브쿼리는 다음과 같은 상황에서 유용하게 쓰일 수 있습니다:

  • 특정 고객이 구매한 상품들과 동일한 가격대의 다른 상품을 추천할 때.
  • 특정 카테고리에서 평균보다 높은 가격을 가진 상품들을 찾을 때.

10. 전자상거래 업계에서 사용할 수 있는 경우 예상 상황 문제 2가지 및 그 경우에 대한 SQL 코드 작성

  1. 특정 상품보다 비싼 가격을 가진 상품들을 출력하시오.
SELECT product_name, price
FROM products
WHERE price > (SELECT MAX(price) FROM products WHERE product_id IN (101, 102));
  1. 특정 고객이 구매한 상품들과 동일한 가격대의 다른 상품들을 추천하시오.
SELECT product_name, price
FROM products
WHERE price IN (SELECT price FROM purchases WHERE customer_id = 1001);

11. 10번에 대한 SQL 코드를 시각적으로 이해하기 쉽도록 테이블 예시 작성

PRODUCT_NAMEPRICE
Product X120
Product Y150
Product Z130

위의 예시에서 특정 상품 ID 101, 102에 해당하는 상품 가격보다 높은 가격을 가진 다른 상품들이 검색될 것입니다.

Posts created 411

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top