상세 컨텐츠

본문 제목

SQL Union, Subquery

코딩/SQL

by joing_in 2023. 3. 17. 16:52

본문

Union(결과물 합치기)

 

이어 보고 싶을 때 이어주는거

 

 

 

 

 

 

 

 

ex)

(

select '7월' as month, c.title, c2.week, count(*) as cnt from checkins c2

inner join courses c on c2.course_id = c.course_id

inner join orders o on o.user_id = c2.user_id

where o.created_at < '2020-08-01'

group by c2.course_id, c2.week

)

union all

(

select '8월' as month, c.title, c2.week, count(*) as cnt from checkins c2

inner join courses c on c2.course_id = c.course_id

inner join orders o on o.user_id = c2.user_id

where o.created_at >= '2020-08-01'

group by c2.course_id, c2.week

)

 

**order by 는 있어도 정렬이 안됨 -> 이땐 SubQuery 사용하기

Subquery

ex)

SELECT u.user_id, u.name, u.email from users u

inner join orders o on u.user_id = o.user_id

where o.payment_method = 'kakaopay'

 

 -> SubQuery

(Where 에 들어가는 Subquery)

SELECT user_id, name, email from users u

where user_id in (

select user_id from orders o

where payment_method = 'kakaopay'

)

 

Select 에 들어가는 Subquery

ex)

SELECT c.checkin_id,

c.user_id,

c.likes,

(

SELECT avg(likes) from checkins

where user_id = c. user_id

) as avg_likes_user

from checkins c

 

From 에 들어가는 Subquery (가장 많이 사용되는 유형!)

 

ex)

select pu.user_id, pu.point, a.avg_likes from point_users pu

inner join (

select user_id, round(avg(likes),1) as avg_likes from checkins c

group by user_id

) a on pu.user_id = a.user_id

 

'코딩 > SQL' 카테고리의 다른 글

SQL 문자열, Case  (0) 2023.03.17
Subquery, with절 연습  (0) 2023.03.17
SQL left join 연습  (0) 2023.03.17
SQL inner join 연습  (0) 2023.03.15
SQL join, Alias  (0) 2023.03.15

관련글 더보기