# ★ 쿼리 작성 가이드 ★
# 쿼리 체크 리스트
쿼리 작성할 때 바로 쿼리를 작성하지 말고, 잠깐 아래 내용을 생각해보고 작성을 시작해보시면 어떨까요?
- 현재 보고 싶은 지표는 무엇인가?, 이 쿼리를 작성하는 목표는 무엇인가?
- 해당 지표는 어떻게 계산해야 할까? 데이터의 기간은 어떻게 될까?
- 해당 지표를 계산하기 위해 어떤 테이블을 확인해야 할까? JOIN시 활용할 Key는 무엇인가?
- 하나의 테이블에서 원하는 정보를 모두 추출할 수 있을까? 혹은 여러 테이블을 사용해야 할까?
- 데이터를 파악할 때 주의해야 하는 내용은?(status가 특정 값인 것만 추출한다거나)
- 위 내용을 주석으로 설정한 후, 쿼리 작성하는 습관 가지기
TIP
주석 템플릿
# 쿼리를 작성하는 목표, 확인할 지표 :
# 쿼리 계산 방법
# 데이터의 기간
# 사용할 테이블
# Join KEY
# 데이터 특징
SELECT
FROM
# 회사에서 쿼리 작성하는 흐름
쿼리 체크 리스트를 작성한다
보고 싶은 지표를 구체화한다(ex : 유저가 얼마나 A 제품을 구입하는가?)
- 2-1. 사내에 이미 해당 지표를 구하는 쿼리가 있는지 찾아본다 => 있으면 바로 쿼리 실행하고 쿼리 분석하기
보고 싶은 지표가 있는 데이터가 있는 Table 찾기(여러 Table일 수 있음)
- 3-1. 하나의 Table에서 모든 데이터가 나올 것 같은 경우 => 바로 쿼리를 짠다
- 3-2. 여러 Table에서 데이터를 연결해야 할 것 같은 경우 => 어떻게 연결할지 고민한다
구한 결과값이 정말 맞는지 확인한다(데이터 정합성 체크) => 원본 데이터를 하나씩 비교해보는 방법도 있고 다양한 방법이 존재
쿼리를 더 좋게 만들 방법을 고민한다(쿼리 속도, 가독성 등)
# 쿼리 실행 순서
쿼리문은 실행시 내부적으로 다음과 같은 순서로 실행됩니다. 실행 순서를 이해하고 있으면 왜 오류가 나는지 이해할 수 있습니다
FROM
WHERE
GROUP BY, Aggregation
HAVING
WINDOW
QUALIFY
DISTINCT
ORDER BY
LIMIT
- FROM 절의 테이블에서 데이터를 확인하고
- WHERE 조건에서 필터링할 조건 탐색하고
- GROUP BY가 있다면 집계(Aggregation)하며
- 집계 후 조건이 필요할 경우 HAVING
- 윈도우 함수 실행
- QUALIFY 윈도우 함수 조건
- DISTINCT 고유값 확인
- ORDER BY 정렬
- LIMIT으로 행 개수 제한