소속 테이블 표현하며 결합
AS를 사용하여 새로운 칼럼 및 값을 추가하여 결합
# ramen
id | name | quantity | is_spicy | shelf_life
----+------------+----------+----------+------------
1 | 진라멘 | 2 | f | 90
2 | 고추짜장면 | 15 | f | 30
3 | 리얼짬뽕 | 47 | t | 40
4 | 추풍라면 | 18 | f | 90
5 | 겨울이라면 | 50 | t | 60
(5 rows)
# drink
id | name | quantity | shelf_life | volume
----+--------------+----------+------------+--------
1 | 에너지드링크 | 36 | 30 | 300
2 | 오렌지주스 | 38 | 25 | 1500
3 | 무안단물 | 41 | 35 | 600
4 | 순진맥주 | 47 | 60 | 900
5 | 더맛 | 3 | 35 | 1000
(5 rows)
# canned_food
id | name | quantity | weight
----+-----------+----------+--------
1 | 참치 | 14 | 350
2 | 고추참치 | 5 | 200
3 | 연어 | 3 | 400
4 | 곰과 연어 | 14 | 400
5 | 삼치 | 50 | 450
(5 rows)
(
select name, quantity, 'drink' as item_type
from drink
)
union all
(
select name, quantity, 'ramen' as item_type
from ramen
)
union all
(
select name, quantity, 'canned_food' as item_type
from canned_food
)
order by quantity desc;
name | quantity | item_type
--------------+----------+-------------
겨울이라면 | 50 | ramen
삼치 | 50 | canned_food
리얼짬뽕 | 47 | ramen
순진맥주 | 47 | drink
무안단물 | 41 | drink
(이하생략)
(15 rows)
서브쿼리 결합 후 조건사용1
item_list는 from절 이후의 서브쿼리 별칭이며 필수사용해야함
select item_type, array_agg(name) as name
from (
(
select name, quantity, 'drink' as item_type
from drink
)
union all
(
select name, quantity, 'ramen' as item_type
from ramen
)
union all
(
select name, quantity, 'canned_food' as item_type
from canned_food
)
) item_list
where quantity <= 20
group by 1;
item_type | name
-------------+----------------------------------
canned_food | {참치,고추참치,연어,"곰과 연어"}
ramen | {진라멘,고추짜장면,추풍라면}
drink | {더맛}
(3 rows)
서브쿼리 결합 후 조건사용2
다루는 정보의 양을 최소화한 이후 데이터를 결합하기때문에 성능이 더 좋다.
select item_type, array_agg as name
from(
(
select 'drink' as item_type, array_agg(name)
from drink
where quantity <= 20
group by 1
)
union all
(
select 'ramen' as item_type, array_agg(name)
from ramen
where quantity <= 20
group by 1
)
union all
(
select 'canned_food' as item_type, array_agg(name)
from canned_food
where quantity <= 20
group by 1
)
) item_list;
item_type | name
-------------+----------------------------------
drink | {더맛}
ramen | {진라멘,고추짜장면,추풍라면}
canned_food | {참치,고추참치,연어,"곰과 연어"}
(3 rows)
'SQL' 카테고리의 다른 글
SQL 테이블 열연결(JOIN) (0) | 2025.02.05 |
---|---|
SQL 테이블 열연결(FROM, WHERE) (0) | 2025.02.05 |
SQL 테이블 행연결(EXCEPT, EXCEPT ALL) (0) | 2025.02.05 |
SQL 테이블 행연결(UNION, UNION ALL) (0) | 2025.02.05 |
SQL 테이블 행연결(INTERSECT, INTERSECT ALL) (1) | 2025.01.31 |