마케터의 SQL 학습기 : 데이터 전처리용 기본구문 익히기 (2)

2022. 5. 12. 22:38Work, 일/SQL

요약
- group by 구문
- group by와 함께 쓰는 그룹함수
- having 구문
- order by 구문
- 해석 및 작성 순서
- 기본구문 간단 최종정리

 

 

group by 구문

- 데이터를 '특정 컬럼 기준'으로 그룹화시키는 구문

- 그룹을 나누고, 그 그룹을 또 그룹화할 수 있음 : group by [컬럼1(그룹기준1)], [컬럼2(그룹기준2)]

ex. 배달의민족 group by shop_category, menu : 배달의민족을 가게 카테고리 별로 나누고, 각 가게 카테고리 내에서 메뉴 별로 다시 나눔

- 많은 양의 데이터를 처리하는데 하나하나 데이터를 다 다루며 특징을 찾아내기 힘들 때 사용. 대량의 데이터를 집계하고, 집계한 지표를 사용해서 그룹 특징을 파악할 수 있음. 고객 특징, 시장 특징 등 그룹별 특징을 파악할 수 있음

- 각 그룹에 대한 계산결과(합/평균/카운트 등)를 산출하기 위해서 그룹함수와 같이 사용

- select 뒤의 컬럼과 group by 뒤의 컬럼은 동일한 순서 및 컬럼으로 작성

- 어떤 특징으로 그룹화할지 고민하는게 좋다

 

 

group by와 함께 쓰는 그룹함수

- 하나 이상의 행을 그룹으로 묶어 계산하기 위한 함수

- group by 기준으로 나누어진 각 그룹별로 함수의 결과를 확인할 수 있음

- count, sum, avg, max, min

- count(*)는 전체 행의 개수를 세는 것이므로 null도 세지만, count(컬럼)은 null을 제외하고 센다

 

 

having 구문

- group by한 그룹함수 결과에 대해서 조건을 적용하는 경우 사용=그룹조건

- group by절 뒤에 이어서 작성

- group by구보다 where구가 먼저 실행되기 때문에 그룹조건에 where에 사용할 수 없음. where은 테이블에, having은 그룹결과에 적용하는 것

 

 

order by 구문

- "~순서대로"를 의미

- 테이블을 특정 컬럼의 값을 기준으로 오름차순(ASC) or 내림차순(DESC)으로 정렬 가능

- 한 개 혹은 여러 개의 컬럼에 정렬기준 적용 가능

단일 컬럼 정렬 : order by 컬럼1 (asc) or desc (asc는 생략 가능, 자동 적용)
복수 컬럼 정렬 : order by 컬럼1 desc, 컬럼2 = 컬럼1은 내림차순, 컬럼2는 오름차순

- 다만 엑셀에서 하는 게 시간 리소스가 훨씬 절약되므로 이 작업은 SQL에서는 잘 사용하지 않는다

 

 

해석 및 작성 순서

from(어느 테이블을 사용해?)
> where(테이블에 어떤 필터를 걸어?)
> group by(필터된 테이블을 어떤 기준으로 그룹화해?)
> having(어떤 기준에 맞는 그룹만 산출해?)
> select(그룹을 산출할 때 어떤 컬럼값을 산출해?)
> order by(산출 결과를 어떻게 정렬해?)

 

기본구문 간단 최종정리

목적 구문 절 작성 예시 해석
데이터를 정리하기 위한 기본 구문 select product_id,
count(order_id) as ords,
sum(QUANTITY) as total_qan
product_id 별 order_id의 갯수를 ords 이름으로 뽑아주고, QAUNTITY의 합을 total_qan의 이름으로 뽑아주는데
from 'ls-data-literacy-301513.ls_sql_ecample.co_coer_iems' 이 테이블에서
where is_canceled = '0' is_canceled가 0인 테이블값만 불러와서
데이터분석 결과를 만들기 위한 구문 group by product_id product_id 별
having sum(QUANTITY) >= 100 QUANTITY의 합계가 100 이상인 값만
데이터를 예쁘게 나열하기 위한 구문 order by prodoct_id product_id의 오름차 순으로 산출해줘