여러개의 테이블을 세로로 결합하기(UNION ALL 구문)
여러 테이블에 분산된 비슷한 형식의 데이터에 같은 처리를 해야하는 경우가 있다. 예를 들어 다음 데이터 예를 살펴본다. 애플리케이션 1과 애플리케이션 2가 있을 때 각각의 사용자를 저장한 테이블이다.
비슷한 구조를 가지는 테이블의 데이터를 일괄 처리하고 싶은 경우, 다음 코드처럼 UNION ALL 구문을 사용해 여러 개의 테이블을 세로로 결합하면 좋다. 결합할 때는 테이블의 컬럼이 완전히 일치해야 하므로, 한쪽 테이블에만 존재하는 컬럼은 phone 컬럼처럼 SELECT 구문으로 제외하거나 email 컬럼처럼 디폴트 값을 줘야한다.
추가로 결합후의 데이터가 어떤 테이블의 데이터였는지 식별할 수 있게 app_name이라는 열을 추가했다.
UNION ALL 구문 대신 UNION DISTINCT (또는 UNION) 구문을 사용하면, 데이터의 중복을 제외한 결과를 얻을 수 있다. 다만 UNION ALL에 비해 거의 사용되지 않고 계산 비용이 많이 들어간다. 따라서 일단 UNION ALL 구문부터 확실하게 사용할 수 있게 연습하는것이 좋다.
'Study > 데이터 분석을 위한 SQL 레시피' 카테고리의 다른 글
[빅쿼리(BigQuery) - SQL] 조건 플래그를 0과 1로 표현하기(CASE 식, SIGN 함수) (0) | 2023.03.27 |
---|---|
[빅쿼리(BigQuery) - SQL] 여러 개의 테이블을 가로로 정렬하기(LEFT JOIN) (0) | 2023.03.22 |
[빅쿼리(BigQuery) - SQL] 가로 기반 데이터를 세로 기반으로 변환하기(unnest 함수, CROSS JOIN) (0) | 2023.03.20 |
[빅쿼리(BigQuery) - SQL] 세로 기반 데이터를 가로 기반으로 변환하기(MAX 구문, string_agg 함수) (0) | 2023.03.17 |
[빅쿼리(BigQuery) - SQL] 그룹 내부의 순서(윈도 함수, OVER 구문) (0) | 2023.03.14 |