본문 바로가기
프로그래밍/SQL

[SQL] 서브쿼리(Subquery) 와 그 사용법 정리

by 곰 옥수수 2023. 1. 14.
728x90
반응형

안녕하세요. 곰 옥수수 입니다.

 

오늘은 서브쿼리(Subquery)에 대해서 정리해보도록 하겠습니다.

 


서브쿼리(Subquery) 개념

서브쿼리(Subquery) 는 SQL문 안에 포함된 또 다른 SQL 문이다.

 

서브쿼리의 용도는 기준을 위한 검색을 위해 사용한다.

 

메인쿼리와 서브쿼리 관계는 주종 관계로,

서브쿼리에 사용되는 컬럼 정보는 메인쿼리의 컬럼 정보를 사용할 수 있으나 역으로는 성립하지 않는다.

 

서브쿼리 종류

위치 기준으로 select 절, from 절, where 절 서브쿼리가 있다.

select 절: 서브쿼리가 select 절 안에 들어가있는 형태이다.

 

from 절: 서브쿼리가 from절안에 들어가 있는 형태이다.

             인라인 뷰(Inline View)라고 불린다.

              View의 기능처럼 사용할 수 있다.

 

where 절: 서브쿼리가 where절 안에 들어가 있는 형태이다.

                중첩 서브쿼리(Nested Sub - Query) 라고도 불린다.

 

그럼 예제를 통해 이해해 보도록하자! 

 checkins: 유저가 강의실 들어가면 글을 남길 수 있는 '오늘의 다짐'의 데이터가 들어있습니다.

 

1. Select 절 

Select 절 서브쿼리(Subquery)는 컬럼을 대신하여 서브쿼리를 사용하는 방법이다. 

Q. 위 데이터에 like가 있는데  like의 평균을 구하고 싶다. 

 

2. From 절 

point_users: 유저별 포인트 점수를 가지고 있는 테이블이다.

 

From  서브쿼리(Subquery)는 가상의 테이블인 View 처럼 사용하는 방법이다. 

Join문을 사용할 때 사용해보도록 하겠다. 

Q. 유저별로 포인트 점수와 위에서 구한 평균 like(avg_likes)를 구하고 싶다. 

일단 checkins 테이블에는 평균like에 대한 정보가 없기 때문에 서브쿼리로 구한 후 join을 해줘야한다.

 

3. Where 절

point_users: 유저별 포인트 점수를 가지고 있는 테이블이다.

where 절은 조건에 필요한 값을 구해서 비교해주는 역할을 한다.

Q. 유저별로 가진 포인트의 데이터를 구하는데 평균 포인트보다 높게 가진 데이터를 구할 것이다.

평균포인트는 5,380.8이다. 

 

포인트를 평균이상 가진 유저는? 

 


서브쿼리(Subquery) 개념사용방법에 대해서 정리해봤어요! 

 

이렇게 여러 방법으로 서브쿼리(Subquery)를 사용할 수 있어요.

 

비슷하게 궁금해 하는 개발자님들 에게 조금이라도 도움이 됐으면 좋겠네요. 

 

그럼 안녕~ 

 

728x90
반응형

댓글