개발/SQL
[SQL] Redshift 중심의 SQL(기초문법2: GROUP BY, CTAS)
devculture309
2023. 5. 10. 17:22
반응형
1. GROUP BY & Aggregate 함수
- 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
- 그룹핑은 두 단계로 이뤄짐
① 먼저 그룹핑을 할 필드를 결정(하나 이상의 필드가 될 수 있음)
- GROUP BY로 지정(필드 이름을 사용하거나 필드 일련번호 사용)
② 그룹별로 계산할 내용을 결정
- 여기서 Aggregate 함수를 사용
- COUNT, SUM, AVG, MIN, MAX, LISTAGG, .....(필드 이름을 지정하는 것이 일반적)
SELECT customer_id, SUM(price * quantity) as total_sales --customer_id별로 주문한 총 가격 계산하기
GROUP BY customer_id;
2. CTAS
- SELECT를 가지고 테이블 생성
- 간단하게 새로운 테이블을 만드는 방법
- 자주 조인하는 테이블들이 있다면 이를 CTAS를 사용해서 조인해두면 편리해짐 + 필요시 재사용 가능
-- order 테이블
CREATE TABLE order (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10,2)
);
-- customer 테이블
CREATE TABLE customer (
customer_id INT,
customer_name VARCHAR(100),
email VARCHAR(100),
address VARCHAR(200)
);
→ 이 두 테이블을 customer_id를 기준으로 조인
-- order와 customer를 조인하여 new_order 테이블 생성
CREATE TABLE new_order AS
SELECT o.order_id, o.order_date, o.total_amount, c.customer_id, c.customer_name, c.email, c.address
FROM order o
JOIN customer c ON o.customer_id = c.customer_id;
→ 필요 시 new_order 테이블을 재사용 가능하다
항상 시도해봐야하는 데이터 품질 확인 방법들
1) 중복된 레코드들 체크하기
- 중복을 제거한 테이블의 COUNT와 원본 테이블의 COUNT를 비교
2) 최근 데이터의 존재 여부 체크하기
- 최근까지 데이터가 방치되지 않고 지속적으로 관리 되었는지 확인 → Freshness
3) Primary key uniqueness가 지켜지는지 체크하기
- id와 id의 record 갯수가 1개여야 함
4) 값이 비어있는 컬럼들이 있는지 체크하기
반응형