1. 서브쿼리(SQL의 꽃)

 

select [컬럼명], ...

from [테이블명]  ☜ ★ 서브쿼리 위치

join  서브쿼리 위치

where [조건절]

group by [컬럼명 or 컬럼순서]

having [집계함수 조건절]

order by [컬럼명 or 컬럼순서]

limit [N]

cf) 서브쿼리 위치는 특정지어져있지는 않은데, 실무에서는 거의 from절에 온다!(99.5%)

 

※ 서브쿼리를 언제 사용할까?

: 하나의 SQL문으로 풀 수 없는, 조금 더 복잡한 데이터를 추출할 때

ex)
- 하루동안 2개 이상의 상품을 구매한 고객은 주로 어떤 상품을 구매했을까?

ex)
- A상품을 구매한 고객은 A상품 외에 추가로 어떤 상품을 구매했을까?

ex)
- 하룻동안 2개 이상의 상품을 구매한 고객성연령 분포는 어떠할까?

2depth로 들어가는 문제를 해결.. 서브쿼리는 SQL의 꽃 (이런 문제로 엑셀보다 SQL을 사용한다)

 

 

 

2. 서브쿼리 예시

 

ex) join구문에도 올 수 있다. 1 depth 결과를 하나의 테이블로 볼 수 있음


ex)

 

ex)


# 서브쿼리 활용 예시

- 지난달 첫구매 고객의 월별 주문빈도는?
- 지난달 첫구매 고객 중 이번달에도 구매를 (진행한 고객/이탈한 고객)은?
- 지난달 구매한 상품을 이번달 재주문한 상품은?
- 이번달 매출액이 높은 카테고리의 월별 성장률은?

 

 

# 서브쿼리 불필요 예시

- 여성 고객이 구매한 주요 상품은?
- A상품을 구매한 고객 수는?
- 한달동안 2회 이상 주문한 고객 수는?



3. 윈도우 함수(심화) 

- SQL에서는 이렇게까지 분석을 하지 않기 때문에 굳이 윈도우 함수를 사용하지는 않는다


# 윈도우 함수를 언제 사용할까?

- Group By만으로는 원하는 계산이 안될때 or (구매비중 / 성장률 / 랭킹)

 

ex) 카테고리별 매출액 비중은?

ex) 월별 성장률은?

ex) 매출액이 높은 카테고리를 Ranking을 매긴다면?

 


# 윈도우 함수 사용 사례

1) 구매비중

- 내가 원하는 차원으로 집계를 하기

 


2) 성장률

- 내가 원하는 값을 이전 행에서 가져오기

 


3) 랭킹

- 내가 원하는 차원으로 랭킹을 매겨보기

 

 

4. DDL의 정의 및 사용예시

Data Definition Language (데이터 정의 언어)

create 테이블 생성 데이블 '조회'를 넘어서

테이블을 만지는 작업
drop 테이블 삭제
alter 테이블 변경
( 테이블명 변경,
컬럼명 변경,
컬럼 추가,
컬럼 삭제,
컬럼 데이터 유형  변경 )
truncate 모든 행 삭제

 

※ DDL을 마지막에 배우는 이유 (실무)

- DDL을 일반 유저에게는 못하도록 권한을 막아놓은 회사들이 많다

- 데이터화가 잘되어있는 회사일수록 DDL을 사용할 일이 거의 없긴하다

 

 

※ DDL 활용 예시

1) 원하는 데이터가 DB화가 안되어 있을 때, 테이블생성을 해서 조인에 사용함

 ex) "카테고리별 담당자"가 DB화가 안되어 있고, 엑셀파일로 관리 중임

→ create 구문을 통해 테이블화

→ 매출 테이블에 join해서 담당자별 매출액 확인

 

2) DB로부터 자주 쓰는 데이터가 있을 때, 아예 테이블로 생성해서 빠르게 조회/공유하고자 사용함**

ex) 주별, 상품별 매출액 데이터가 자주 필요함. 하지만 주문 테이블로부터 매번 주별, 상품별 데이터를 sum + group by하기 번거롭고, 신행하는 데도 시간이 오래걸림

→ 지난주까지의 주별, 상품별 데이터를 sum + group by하여 테이블로 생성

→ 해당 테이블로 자유롭게 분석 진행 및 유관 팀에 공유하여 좀더 쉽게 커뮤니케이션 

 

(추가개념)

DML ( Data Manipulation Language : 데이터 조작 언어 )

select 테이블 조회 테이블 형태를 만지지 않고,
데이터를 조회 및 수정하는 작업
insert 테이블에 행 추가
delete 테이블에 행 삭제
update 테이블에 값 변경

→ DDL, DML, DCL 등 자격증을 준비할 때는 확실히 숙지하여야 한다.

'SQL' 카테고리의 다른 글

SQL 앞으로의 학습방법  (0) 2023.03.07
SQL 응용 문법  (0) 2023.03.07
SQL 실습 ③ 데이터 가공하기  (0) 2023.03.07
SQL Join의 유형 / 주의사항  (0) 2023.03.02
SQL 실습 ② 주문 데이터 분석 (join 이용)  (0) 2023.03.02

+ Recent posts