개발/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) 값이 비어있는 컬럼들이 있는지 체크하기

반응형