SQL 8

25. 트랜잭션 및 SQL 고급 문법

학습주제트랜잭션 소개와 실습기타 고급 문법 소개와 실습주요 메모 사항 소개트랜잭션이란?Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법이다.DDL이나 DML중 레코드를 수정 / 추가 / 삭제한 것에만 의미가 있다.SELECT에는 트랜잭션을 사용할 이유가 없다.BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용한다.ROLLBACK은행 계좌 이체가 아주 좋은 예시계좌 이체 : 인출과 입금의 두 과정으로 이뤄짐만일 인출은 성공했는데 입금이 실패한다면?이 두 과정은 동시에 성공하던지 실패해야한다. -> Atomic하다는 의미이런 과정들을 트랜잭션으로 묶어 주어야한다.조회만 한다면 이는 트랜잭션으로 묶일 이유가 없다.BEGIN; A의 계좌로부터 인출; ..

데이터분석 2023.12.30

24. JOIN

학습주제JOIN이란?다양한 종류의 JOIN주요 학습 내용JOIN 이란?두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용된다.스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용된다.JOIN의 결과는 방식에 상관없이 양쪽의 필드를 모두 가진 새로운 테이블을 만들어내게 된다.다양한 종류의 JOININNER JOIN 양쪽 테이블에서 매치가 되는 레코드들만 리턴한다.양쪽 테이블의 필드가 모두 채워진 상태로 리턴된다.FULL OUTER JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴한다.매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴된다.CROSS JOIN 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴한다.LEFT , RIGHT JOI..

데이터분석 2023.12.29

23. GROUP BY & AGGREGATE

학습주제GROUP BY와 AGGREGATE 함수CTAS와 CTE 소개데이터 품질 확인주요 메모 사항 소개GROUP BY & Aggreagate 함수테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산2단계로 이루어진다.먼저 그룹핑을 할 필드를 결정한다(1개 이상의 필드)GROUP BY로 지정 (필드 이름을 사용하거나 필드 일련번호를 사용한다)다음 그룹별로 계산할 내용을 결정한다.- 여기서 Aggregate 함수를 사용한다.- COUNT, SUM, AVG, MIN, MAX, LISTAGG, ...- 보통 필드 이름을 지정하는 것이 일반적이다.(alias)CTAS : SELECT 가지고 테이블 생성간단하게 새로운 테이블을 만드는 방법자주 조인하는 테이블들이 있다면 CTAS를 사용해서 조인해두면 편리하다D..

데이터분석 2023.12.29

22. SQL 코드 작성

학습주제예제 테이블 소개SQL 소개 (DDL, DML)주요 메모 사항 소개관계형 데이터베이스 예제웹서비스 사용자 / 세션 정보사용자 ID : 보통 웹서비스에서는 등록된 사용자마다 부여하는 유일한 ID세션 : 사용자의 방문을 논리적인 단위로 나눈 것- 하나의 사용자는 여러개의 세션을 가질 수 있다.- 보통 세션을 만들어낸 접점(경유지)를 채널이랑 이름으로 기록해둔다.- 마케팅 관련 기여도 분석에 사용한다.- 세션이 생긴 시간도 기록한다.세션 정보를 바탕으로 다양한 데이터 분석과 지표 설정이가능하다마케팅관련,  사용자 트래픽 관련DAU, WAU, MAU  등의 일주일별 Active User 차트Marketing Channel Attribution 분석- 어느 채널에 광고를 하는 것이 가장 효과적인가?예시사용..

데이터분석 2023.12.29

14. 효율적인 SQL 코드 작성법

학습주제효율적인 SQL 코드 작성하기테이블을 집합으로 생각하기*, % 사용 지양하기데이터 타입 잘 확인하기JOIN 시 유의할 점가독성 높이기주요 메모 사항 소개테이블을 집합으로 생각한다.최대한 작게 만들어 놓고 JOIN 한다.즉 WHERE 절을 이용하여 최대한 필터링 하는것이 효율적이다.WITH customer as ( SELECT customer_id, customer_name, customer_tier FROM Customers WHERE customer_id = 1 --  *, % 사용 지양한다.LIMIT 걸고 조회한다.파티션이 있는 테이블인지 확인하고, 파티션을 필터 조건으로 걸고 조회한다.칼럼 수가 많은 테이블을 조회할 때 SELECT *  사용 지양한다.- 위의 사진 처럼 SELEC..

데이터분석 2023.12.07

13. 데이터 타입

학습주제다양한 데이터 타입 다루기숫자문자이진ArrayKey-value주요 메모 사항 소개숫자 데이터 타입 (비고란의 크기는 전부 byte 입니다.)데이터 타입의미비고BIT (M)0과 1로만 구성ex) b’111’ = 71 기본값 M = 1TINYINT매우 작은 정수Signed 범위 : -127 ~ 127Unsigned 범위 : 0 ~ 225BOLL, BOOLEANTrue / FalseTINYINT(1) 과 같다.0이면 False, 1이면 TrueSMALLINT작은 정수-32768 ~ 327670 ~ 65535MEDIUMINT중간 크기 정수-8388608 ~ 83886070 ~ 16777215INT, INTEGER정수-2147483648 ~ 21474836470 ~ 4294967295BIGINT, SERI..

데이터분석 2023.12.06

12. SQL문

학습주제JOINSUNIONWITHSubquery타임스탬프 함수타입변환조건문그 외 유용한 함수주요 메모 사항 소개JOIN : 두 개 이상의 테이블을 특정 Key를 기준으로 결합하는 것INNER JOIN : 두개의 테이블에서 일치하는 행만 가져온다. (교집합)LEFT JOIN : 왼쪽 테이블의 모든 행 가져오고 오른쪽에서 일치하는  행만 가지고 온다.- 불일치 값은 null로 채워짐RIGHT JOIN : 오른쪽 테이블의 모든 행 가져오고 왼쪽에서 일치하는 행만 가지고 온다.FULL OUTER JOIN : 모든 행 조합(필터링 없음)- 모든 행을 더하기 때문에 DB에 과부하가 심하게 걸릴 수 있다. 꼭 필요할때만 사용Alias : 별칭과 같다UNION : SELECT 한 결과문 위 아래로 붙히는 것- 중복행 ..

데이터분석 2023.12.05

11. SQL 과 RDB

학습주제SQL과 RDB란 무엇인가데이터 조회 : SELECT, FROM, WHERE비교 연산자와 논리 연산자정렬과 집계기초 SQL 함수DDL, DML주요 메모 사항 소개SQL을 사용하면 좋은 점 입니다.원하는 형태로 데이터를 가져올 수 있다.효율적으로 데이터를 가져올 수 있다.간단한 데이터 분석을 수행할 수 있다.RDBMS / SQL 개요입니다.SQL (Structured Query Language) : 관계형 데이터베이스를 사용하기 위한 표준언어쿼리 : 기초 구문Atomicity (원자성) : 전부 반영되거나 아무것도 반영되지 않아야 한다.Consistency (일관성) : 입력 값의 commit 전 후가 동일해야한다.Isolation (격리성) : 하나의 트랜잭션이 다른 트랜잭션을 방해할 수 없다.D..

데이터분석 2023.12.04