Union
Coddy SQL 여정의 기초 섹션에 포함된 레슨 — 72개 중 48번째.
Union은 Join과 다릅니다. Join은 조건을 사용하여 테이블을 결합하지만 Union은 단순히 두 테이블을 서로 위에 쌓습니다. UNION을 사용하려면 다음과 같이 작성합니다:
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2두 select 문은 다음 규칙을 준수해야 합니다:
- 필드의 수가 동일해야 합니다
- 순서가 중요합니다
- 동일한 위치의 컬럼은 데이터 타입이 일치해야 합니다
예를 들어, 다음과 같은 테이블이 있다고 가정해 보겠습니다:
germany_people
| id | 이름 |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | name |
| 1 | George |
| 2 | Lena |
문제: 우리가 가진 모든 이름으로 하나의 큰 테이블을 만들고 싶습니다.
SELECT name from germany_people
UNION
SELECT name from england_people결과:
| 이름 |
| Lena |
| Leonie |
| George |
UNION은(는) 중복되지 않은 값만 반환하는 반면, UNION ALL은 모든 레코드를 있는 그대로 반환합니다:
SELECT name from germany_people
UNION ALL
SELECT name from england_people결과:
| 이름 |
| Lena |
| Leonie |
| George |
| Lena |
또한 UNION ALL을 집계 함수, GROUP BY, 그리고 ORDER BY와 결합하여 여러 테이블의 데이터를 요약할 수 있습니다. 비결은 UNION ALL을 서브쿼리 내부에 감싸고, 그 결과에 대해 그룹화와 정렬을 적용하는 것입니다.
예를 들어, 두 테이블 전체에서 각 이름이 몇 번 나타나는지 세고 싶다고 가정해 보겠습니다:
SELECT name, COUNT(*) AS total_count
FROM (
SELECT name FROM germany_people
UNION ALL
SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESC결과:
| name | total_count |
| Lena | 2 |
| Leonie | 1 |
| George | 1 |
여기서는 Lena와 같은 중복 항목이 유지되도록 (UNION이 아닌) UNION ALL이 사용되었습니다. 그렇지 않으면 계산하기 전에 중복 항목이 제거됩니다. 서브쿼리는 모든 행을 병합하고, GROUP BY + COUNT가 이를 요약합니다. ORDER BY는 최종 결과를 정렬합니다.
챌린지
쉬움사용 가능한 테이블 및 컬럼:
<strong>sales_2009</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2010</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2011</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong>
3개의 판매 테이블이 있습니다.
모든 테이블을 합쳐 각 제품별 판매량의 합계를 구하세요.
결과에는 product_id와 총 판매량이 포함되어야 합니다.
이 컬럼의 이름을 total_sales로 지정하세요.
결과를 총 판매량(total sales)을 기준으로 내림차순 정렬하세요.
직접 해보기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns