Menu
Coddy logo textTech

Subqueries Part 2

Coddy SQL 여정의 기초 섹션에 포함된 레슨 — 72개 중 39번째.

서브쿼리에는 세 가지 주요 유형이 있습니다:

  1. 스칼라 서브쿼리(Scalar Subqueries) - 단일 값(1행 1열)을 반환합니다
  2. 행 서브쿼리(Row Subqueries) - 다중 열을 가진 단일 행을 반환합니다
  3. 테이블 서브쿼리(Table Subqueries) - 다중 행과 다중 열을 반환합니다

예를 들어 각 하위 쿼리 유형에 대한 유스케이스는 다음과 같습니다.

스칼라 하위 쿼리(Scalar Subquery) - 평균 `salary`보다 더 많은 급여를 받는 `employees` 찾기:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

행 서브쿼리(Row Subquery) - Alice와 동일한 `department` 및 `salary`를 가진 직원 찾기

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

테이블 서브쿼리 - 부서와 해당 부서의 직원 수 표시

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

사용 사례에 주의하세요:

  • 스칼라 - 간단한 비교 (>, <, =)
  • 여러 열을 일치시켜야 할 때
  • 결과 집합에서 쿼리해야 할 때
challenge icon

챌린지

쉬움

사용 가능한 테이블 및 열:

  • shop: price, quantity, category, list_date

총 수량이 상점 전체 수량의 평균보다 큰 카테고리를 찾으세요.

중요: 평균을 계산하려면 HAVING 절 내부에 서브쿼리를 사용해야 합니다. 하드코딩된 값이나 별도의 쿼리를 사용하지 마세요. 서브쿼리는 HAVING 절 안에서 직접 shop 테이블로부터 AVG(quantity)를 계산해야 합니다.

해결 단계:

  1. 먼저, 상점 전체 수량의 평균을 계산하는 서브쿼리를 작성합니다: SELECT AVG(quantity) FROM shop
  2. 그런 다음, 각 카테고리별로 수량의 합계를 구하고 HAVING 키워드를 사용하여 이 서브쿼리와 비교합니다

직접 해보기

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨