(SQL) 테이블 임시로 만들기

(SQL) 테이블 임시로 만들기


✋🏾 PostgreSQL을 이용하여 쓰인 포스팅입니다.
✋🏾 샘플데이터 다운로드 링크


1. 테이블 임시로 만들어야하는 상황


데이터 분석 작업을 하다보면, DB에 주어진 테이블 이외에
임시로 테이블을 만들어야 하는 상황이 생긴다.

DB에 없는 테이블을 별도로 만들어 with구문을 이용해 작업하거나 ,
CROSS JOIN을 원활히 하기위해 사용하는 경우이다.


대표적인 케이스가 가로 기반 데이터를 세로 기반으로 변환할 때이다.
행으로 전개할 데이터 수가 고정되어있으면, 그 수와 같은 수의 일련번호를
가진 피벗 테이블을 만들고 CROSS JOIN을 하여 이 작업을 할 수 있다.

이 때 일련번호를 가진 피벗테이블을 임시로 만들때가 바로 이 포스팅에서 설명할 내용이다.


2. 임시 테이블 만드는 구문


테이블을 임시로 만드는 구문은 다음과 같다.

SELECT <> AS <칼럼명>
UNION ALL SELECT <> AS <칼럼명>
UNION ALL SELECT <> AS <칼럼명> -- 반복하면 됨.
;

또 다른 방법은 WITH구문과 VALUES 구문을 사용해 테이블을 임시로 만드는 것이다.

WITH <테이블명> (칼럼명1,칼럼명2,....) AS(
    VALUES
        (1, 2)
        (3, 4) -- 칼럼순서대로 값이 넣어짐. ex)값1,3은 칼럼1에 속한 값 
) 
<추가 구문>
;

3. 예제

칼럼명이 number이고 1,2,3,4를 레코드로 갖는 테이블을 만들어보자

-- 방법1
SELECT 1 AS NUMBER
UNION ALL SELECT 2 AS NUMBER
UNION ALL SELECT 3 AS NUMBER -- 반복하면 됨.
UNION ALL SELECT 4 AS NUMBER;


--방법 2
WITH NUMBER_TABLE (NUMBER) AS (
    VALUES
        (1),
        (2),
        (3),
        (4)   
)
SELECT *
FROM NUMBER_TABLE;

아래와 같이 출력 됨을 알 수 있다.



© 2024. All rights reserved.