학습주제
- GROUP BY와 AGGREGATE 함수
- CTAS와 CTE 소개
- 데이터 품질 확인
주요 메모 사항 소개
- GROUP BY & Aggreagate 함수
- 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
- 2단계로 이루어진다.
- 먼저 그룹핑을 할 필드를 결정한다(1개 이상의 필드)
GROUP BY로 지정 (필드 이름을 사용하거나 필드 일련번호를 사용한다) - 다음 그룹별로 계산할 내용을 결정한다.
- 여기서 Aggregate 함수를 사용한다.
- COUNT, SUM, AVG, MIN, MAX, LISTAGG, ...
- 보통 필드 이름을 지정하는 것이 일반적이다.(alias)
- 먼저 그룹핑을 할 필드를 결정한다(1개 이상의 필드)
- CTAS : SELECT 가지고 테이블 생성
- 간단하게 새로운 테이블을 만드는 방법
- 자주 조인하는 테이블들이 있다면 CTAS를 사용해서 조인해두면 편리하다
DROP TABLE IF EXISTS adhoc.sooyee_session_summary; CREATE TABLE adhoc.sooyee_session_summary AS SELECT B.*, A.ts FROM raw_data.session_timestamp A JOIN raw_data.user_session_channel B ON A.sessionid = B.sessionid;
- 항상 시도해봐야하는 데이터 품질 확인 방법들
- 중복된 레코드 체크하기
With ds AS ( SELECT DISTINCT userId, sessinId, ts, channel FROM adhoc.sooyee_session_summary ) SELECT COUNT(1) FROM ds;
- 최근 데이터의 존재 여부 체크하기
SELECT MIN(ts), MAX(ts) FROM adhoc.sooyee_session_summary;
- Primary key uniqueness가 지켜지는지 체크하기
SELECT sessinId, COUNT(1) FROM adhoc.sooyee.session_summary GROUP BY 1 ORDER BY 2 DESC LIMIT 1;
- 값이 비어있는 컬럼들이 있는지 체크하기
SELECT COUNT(CASE WHEN sessionId is NULL THEN 1 END) sessionId_null_count, COUNT(CASE WHEN userID is NULL THEN 1 END) userid_null_count, COUNT(CASE WHEN ts is NULL THEN 1 END) ts_null_count, COUNT(CASE WHEN channel is NULL THEN 1 END) channel_null_count FROM adhoc.sooyee_session_summary;
- 중복된 레코드 체크하기
공부하며 어려웠던 내용
-
반응형
'데이터분석' 카테고리의 다른 글
25. 트랜잭션 및 SQL 고급 문법 (0) | 2023.12.30 |
---|---|
24. JOIN (1) | 2023.12.29 |
22. SQL 코드 작성 (0) | 2023.12.29 |
21. 관계형 데이터 베이스, 데이터 웨어하우스 (1) | 2023.12.18 |
14. 효율적인 SQL 코드 작성법 (1) | 2023.12.07 |