본문 바로가기

TIL

[231206] SQL: Subquery, JOIN

* 수강 강의명: 엑셀보다 쉽고 빠른 SQL - 4주차 

 [요약] 

1. Subquery

- Query 안에 sub로 들어간 구문으로 쿼리 속의 쿼리를 의미함 

- 서브쿼리( Subquery )가 필요한 경우는?

  ① 연산을 여러 번 하거나 ② 조건문에 연산된 결과값을 활용하거나 ③ 조건에 쿼리 결과값을 추가하고 싶을 때

 

- 기본 구조

① 예시
select column1, special_column

from

(/* subquery */

select column1, column2 special_column

from table1

) a

 

③ 예시
select column1, column2

from table1

where column1 = (select col1 from table2)

 

 

2. JOIN 절 

- JOIN: 여러 테이블에서 데이터를 불러오는 명령어. 엑셀 Vlookup과 유사한 기능 

- 종류 

 ① LEFT JOIN : 공통 칼럼을 기준으로, FROM 절 테이블(A) 오른쪽에 JOIN 절 테이블(B)이 추가되는 형태. B 테이블에 A 테이블과 매칭되는 값이 없더라도 전체 값이 조회됨

기본 구조
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

 ② INNER JOIN : 공통 칼럼 기준으로,  FROM 절 테이블(A)과 JOIN 절 테이블(B)에 공통적으로 포함된 값만 조회하는 형태. 일종의 교집합. 

select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

 

3. 실습

- Subquery 로 User Segmentation 생성 및 연산하기 

- JOIN으로 두 테이블 조회 및 연산하기

 

[정리]

1) 어떤 문제가 있었나 

데이터 성격에 따라 distinct나 group 칼럼 값 누락 시 결과값이 틀리게 나옴

 

2) 내가 시도해본 건 무엇인가

distinct 기입 여부 및 group 칼럼 항목에 따른 여러 결과값 조회

 

3) 어떻게 해결했나

 

4) 무엇을 새롭게 알았나

- 코딩 시 카테고리(범주) 성격이 있는 항목은 group by로 묶어야 하는지, 고유값(distinct)만 필요하진 않은지 확인하는 습관 필요

- 연산이 복잡할 땐 하나의 쿼리로 끝내려하지 말고, 필요한 데이터를 먼저 뽑아 서브쿼리로 넣고, 추가 쿼리 작성하면 쿼리 흐름을 잡기 용이