Logo TechStockTrade

[1] 서브쿼리 이해하기

by DoctorMarvin
3 days ago
Views: 13
Illustrative Image

오늘은 실무에서 자주 사용하는 서브쿼리(Subquery)에 대해 배워보겠습니다.


🧭 1. 시작하기

SQL은 데이터를 조회하고 가공하는 도구이자, 비즈니스 문제를 해결하는 사고 도구입니다. 수업에서는 SQL의 기본 구조인 SELECT - FROM - WHERE의 흐름을 파악하는 것이 얼마나 중요한지 강조했어요.

SELECT name, salary FROM employees WHERE department = 'Sales';

이처럼 단순한 조건문을 바탕으로, 복잡한 상황에서 서브쿼리를 통해 좀 더 유연하고 정교한 조건을 걸 수 있습니다.


🧩 2. 서브쿼리(Subquery)

서브쿼리는 쿼리 안에 또 다른 쿼리를 포함시켜 사용하는 방식으로, 다음과 같이 세 가지 주요 위치에서 활용됩니다.

🔹 2-1. WHERE 절 서브쿼리

  • 단일행 서브쿼리: 하나의 값을 반환해 비교할 때 사용합니다.
SELECT name, salary FROM employees WHERE salary > ( SELECT AVG(salary) FROM employees );

→ 전체 평균 급여보다 높은 사원을 조회합니다.

  • 다중행 서브쿼리: IN, ANY, ALL과 함께 여러 값을 조건에 활용합니다.
SELECT name FROM employees WHERE department_id IN ( SELECT id FROM departments WHERE location = 'Seoul' );

→ 서울에 있는 부서의 직원 목록을 조회합니다.

  • 다중컬럼 서브쿼리: (col1, col2) 형태로 여러 컬럼을 비교할 때 사용합니다.

🔹 2-2. FROM 절 서브쿼리 + WITH 문

  • 테이블처럼 서브쿼리를 활용할 수 있어 지표 계산이나 중간 데이터 가공에 유용합니다.
SELECT dept, AVG(salary) as avg_salary FROM ( SELECT department as dept, salary FROM employees WHERE position = 'Manager' ) AS managers GROUP BY dept;

→ 부서별 매니저의 평균 급여를 계산합니다.

  • WITH 문은 반복적으로 쓰이는 서브쿼리를 가독성 좋게 정의할 수 있는 방법이에요.
WITH high_earners AS ( SELECT name, salary FROM employees WHERE salary > 5000 ) SELECT * FROM high_earners;

🔹 2-3. SELECT 절 서브쿼리

  • 특정 컬럼 옆에 추가 정보를 계산해서 붙일 때 유용합니다.
SELECT name, (SELECT department_name FROM departments WHERE departments.id = employees.department_id) AS dept_name FROM employees;

→ 직원 정보와 함께 부서 이름도 함께 조회합니다.


📝 마무리

오늘은 SQL 문장의 기본 구조를 이해하고, 서브쿼리를 통해 데이터를 보다 유연하게 다루는 방법을 배웠습니다. 처음에는 조금 낯설 수 있지만, 실제 데이터를 분석할 때 굉장히 강력한 도구가 될거에요.

다음 시간에는 리텐션 분석을 통해 실전 감각을 키워볼 예정이에요 💪

Logo TechStockTrade

More

Based on Tags

Recent Popular

Most Popular

  • 대차대조표 항목별 상세 분석

    대차대조표 세부 구성요소

    Illustrative Image
  • 부동산 vs. 주식투자: 무엇이 먼저일까?

    선주식 후부동산?

    Illustrative Image
  • 시산표의 개념과 활용

    시산표의 유형, 작성 방법, 한계점 및 재무보고에서의 역할

    Illustrative Image