본문으로 건너뛰기
SQL 기초집LESSON 16

서브쿼리로 복잡한 조회 만들기

난이도입문 → 초급
예상 시간30분
선수지식이전 강의

16강. 서브쿼리로 복잡한 조회 만들기

1. 이번 강의에서 해결할 문제

전체 평균처럼 다른 쿼리 결과를 조건에 사용하려면 값을 먼저 구해 수동으로 복사할 필요가 없습니다. 쿼리 안에 다른 쿼리를 결합합니다.

2. 학습 목표

3. 핵심 개념

스칼라 서브쿼리는 한 값, IN 서브쿼리는 값 목록, EXISTS는 행 존재 여부를 제공합니다. 외부 행을 참조하는 correlated subquery는 논리적으로 외부 행마다 평가될 수 있어 계획을 확인해야 합니다.

4. 단계별 SQL 예시

대상 테이블: players, match_results (읽기 전용)
파일 경로: C:\dev\game-ranking-db\sql\16-subqueries.sql

sql/16-subqueries.sql
SELECT result_id, player_id, score
FROM match_results
WHERE score >= (
SELECT AVG(score)
FROM match_results
)
ORDER BY score DESC;

SELECT player_id, username
FROM players AS p
WHERE EXISTS (
SELECT 1
FROM match_results AS mr
WHERE mr.player_id = p.player_id
AND mr.result = 'win'
)
ORDER BY player_id;

SELECT username
FROM players
WHERE player_id IN (
SELECT player_id
FROM match_results
WHERE score >= 1200
);
PowerShell · 실행 순서
sqlite3 -header -box .\data\game_ranking.db ".read .\sql\16-subqueries.sql"

5. 쿼리가 동작하는 이유

첫 내부 쿼리는 전체 평균 한 값을 계산해 바깥 WHERE의 기준이 됩니다. EXISTS는 조건을 만족하는 첫 행을 찾으면 참이므로 데이터 값 자체보다 존재 여부에 적합합니다. IN은 반환된 player_id 집합과 비교합니다.

6. 자주 하는 실수와 안전한 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

서브쿼리로 복잡한 조회 만들기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“서브쿼리로 복잡한 조회 만들기” 내용을 실제 작업에 적용한 설명으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘중첩을 지나치게 깊게 작성’ 상태에 관한 “서브쿼리로 복잡한 조회 만들기” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

16강. 서브쿼리로 복잡한 조회 만들기 미완료 상태