테이블 가로 결합(JOIN)
JOIN을 활용하여 두개 이상의 테이블을 가로로 결합할 수 있습니다.
ON t1.column1 = t2.column1 이런식으로 조인해줄 칼럼을 지정해주면 됩니다.
JOIN의 종류
- (INNER) JOIN : Table1과 Table2에서 값이 같은 행만 반환
- LEFT (OUTER) JOIN : JOIN 왼쪽에 있는 Table1의 모든 결과를 가지고 온 후 Table2와 매칭하며, 매칭되는 데이터가 없을 경우 NULL값 삽입
- RIGHT (OUTER) JOIN : JOIN 오른쪽에 있는 Table2의 모든 결과를 가지고 온 후 Table1와 매칭하며, 매칭되는 데이터가 없을 경우 NULL값 삽입
- FULL(OUTER) JOIN : Table1과 Table2을 매칭시키고 데이터가 없는 경우 NULL처리
- CROSS JOIN : Table1과 Table2의 모든 행을 JOIN한다. 결과는 두 테이블의 행의 개수를 곱한 것과 같음
DATASET QUERY
CREATE TABLE categories_sales (
category_id integer
, name varchar(255)
, sales_amount integer
);
INSERT INTO categories_sales
VALUES
(1, 'dvd', 850000 )
, (3, 'book', 444444)
, (4, 'tape', 300000)
;
CREATE TABLE sales_ranking (
category_id integer
, rank integer
, product_id varchar(255)
, sales integer
);
INSERT INTO sales_ranking
VALUES
(1, 1, 'D001', 50000)
, (1, 2, 'D002', 20000)
, (1, 3, 'D003', 10000)
, (2, 1, 'B001', 60000)
, (2, 2, 'B002', 30000)
, (2, 3, 'B003', 40000)
, (3, 1, 'A001', 60000)
, (3, 2, 'A002', 30000)
, (3, 3, 'A003', 40000)
;
INNER JOIN
select
m.category_id
,m.name
,m.sales_amount
,s.product_id
,s.sales
from
categories_sales as m
JOIN
sales_ranking as s
ON m.category_id = s.category_id;
LEFT JOIN
select
m.category_id
,m.name
,m.sales_amount
,s.product_id
,s.sales
from
categories_sales as m
LEFT JOIN
sales_ranking as s
ON m.category_id = s.category_id;
RIGHT JOIN
select
m.category_id
,m.name
,m.sales_amount
,s.product_id
,s.sales
from
categories_sales as m
RIGHT JOIN
sales_ranking as s
ON m.category_id = s.category_id;
FULL JOIN
select
m.category_id
,m.name
,m.sales_amount
,s.product_id
,s.sales
from
categories_sales as m
FULL OUTER JOIN
sales_ranking as s
ON m.category_id = s.category_id;
CROSS JOIN
Cross join은 on으로 묶어줄 필요가 없다.
select
m.category_id
,m.name
,m.sales_amount
,s.product_id
,s.sales
from
categories_sales as m
CROSS JOIN
sales_ranking as s
728x90
반응형
'SQL & DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 매출데이터 시계열 분석하기(이동평균분석, 월별, Z차트분석) (0) | 2021.01.11 |
---|---|
[PostgreSQL] CTE (WITH 절) (0) | 2021.01.08 |
[PostgreSQL] 테이블 세로 결합(UNION) (0) | 2021.01.07 |
[PostgreSQL] 데이터 행과 열 변환 (0) | 2021.01.07 |
[PostgreSQL] Window Function(윈도우 함수), 순위함수 (0) | 2021.01.07 |