데이터 공부/데이터베이스 & SQL

06. SQL - SubQuery 활용 방법 (A.K.A 4주차 수업 정리 (1))

한소희DE 2021. 9. 23. 21:06

 

SubQuery란?

큰 쿼리문 안에 들어가 있는 쿼리문을 말한다.

테이블 간 Join 작업인데, 더욱 복잡한 명령을 수행한 뒤 Join을 행할 수 있기 때문에 매우 중요한 개념이다.

 

 

 

1-1. Join이 아닌 SubQuery도 사용해야 하는 이유 - Join과 SubQuery 비교

 

만약, kakaopay로 결제한 user의 id, email, name을 보여달라는 명령을 수행해본다고 가정해본다.

이는 Join을 이용해서 (저번 시간에 배웠던 대로) 문제를 해결할 수 있다.

 

하지만, 만약 Join해야 할 테이블에 조건을 걸어야 하는 것이 복잡해진다면, join을 쓰기에는 역부족일 수 있다. 이럴 때 SubQuery를 사용한다. SubQuery를 이용한다면 더욱 간단히 문제를 해결할 수 있다. 

 

 

01. Join으로 위의 명령을 해결하는 코드

select u.user_id, u.email, u.name from users u
inner join orders o on u.user_id = o.user_id  
where o.payment_method = 'kakaopay'

 

 

02. SubQuery로 위의 명령을 해결하는 코드

select user_id, email, name from users u 
where user_id in (
	select user_id from orders o 
	where payment_method = 'kakaopay'
)

 

 


 

02. SubQuery 활용해보기

 

2-1. Select 문의 SubQuery

Select 문에서도 SubQuery를 사용할 수 있다. 예제는 아래와 같다.

 

예제: 각 아이디 별 평균 like값이 테이블에 보일 수 있도록 지정해보기
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 

 

🔥 Tab을 사용하는 이유?

코드의 가시성 확보를 위해서다. 특히 SubQuery(서브쿼리)에서는 가시성 확보가 중요하다. 복잡한 테이블 형태가 엮여 있기 때문이다. 따라서 SubQuery를 사용할 때면 반드시 가시성을 확보하기 위한 작업( 괄호 혹은 Tab 등)을 수행해주는 것을 잊지 않아야 한다.