테이블 결합

SQL로 리포트 만들기

Tyler Pernes

Learning & Development Consultant

목표 보고서

인구통계 그룹별 금메달
(서유럽 국가만)
+----------+--------------------+-------+
| season   |  demographic_group | golds |
|----------+--------------------+-------|
| Winter   | Male Age 26+       | 13    |
| Winter   | Female Age 26+     | 8     |
| Summer   | Male Age 13-25     | 7     |
| Summer   | Female Age 13-25   | 6     |
| Winter   | Male Age 13-25     | 4     |
| Summer   | Male Age 26+       | 4     |
| Winter   | Female Age 13-25   | 4     |
| Summer   | Female Age 26+     | 2     |
+----------+--------------------+-------+
SQL로 리포트 만들기

관련 테이블

SQL로 리포트 만들기

관련 테이블

SQL로 리포트 만들기

옵션 A: 먼저 JOIN, 다음 UNION

SQL로 리포트 만들기

옵션 A: 먼저 JOIN, 다음 UNION

1단계: 상단 쿼리를 JOIN으로 설정

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM summer_games AS sg
JOIN athletes AS a 
ON sg.athlete_id = a.id;
쿼리가 성공적으로 실행되었습니다!
SQL로 리포트 만들기

옵션 A: 먼저 JOIN, 다음 UNION

2단계: 하단 쿼리 작성 + 두 {{1}}를 UNION

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM summer_games AS sg
JOIN athletes AS a 
ON sg.athlete_id = a.id
UNION ALL
SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM winter_games AS wg
JOIN athletes AS a 
ON wg.athlete_id = a.id;
SQL로 리포트 만들기

옵션 B: 먼저 UNION, 다음 JOIN

SQL로 리포트 만들기

옵션 B: 먼저 UNION, 다음 JOIN

1단계: 초기 UNION 생성

SELECT 
    athlete_id, 
    gold  
FROM summer_games AS sg
UNION
SELECT 
    athlete_id, 
    gold  
FROM winter_games AS wg;
SQL로 리포트 만들기

옵션 B: 먼저 UNION, 다음 JOIN

2단계: 서브쿼리로 변환 + JOIN

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM
    (SELECT 
         athlete_id, 
         gold  
    FROM summer_games AS sg
    UNION ALL
    SELECT athlete_id, gold  
    FROM winter_games AS wg) AS g
JOIN athletes AS a 
ON g.athlete_id = a.id;
SQL로 리포트 만들기

비교

옵션 A

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM summer_games AS sg
JOIN athletes AS a 
ON sg.athlete_id = a.id
UNION ALL
SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM winter_games AS wg
JOIN athletes AS a 
ON wg.athlete_id = a.id;

옵션 B

SELECT 
    athlete_id, 
    gender, 
    age, 
    gold  
FROM
    (SELECT 
         athlete_id, 
         gold  
    FROM summer_games AS sg
    UNION ALL
    SELECT athlete_id, gold  
    FROM winter_games AS wg) AS g
JOIN athletes AS a 
ON g.athlete_id = a.id;
SQL로 리포트 만들기

핵심 정리

  • 같은 보고서를 만드는 방법은 여러 가지입니다
  • 단계별 접근 = 디버깅이 더 쉽습니다
SQL로 리포트 만들기

쿼리 시간!

SQL로 리포트 만들기

Preparing Video For Download...