트랜잭션과 기타 고급 SQL 문법트랜잭션이란?트랜잭션이란 Atomic하게 실행되어야 하는 SQL을 묶어서 하나의 작업처럼 처리하는 방법이다. 이는 DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있다. BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용한다. 만약 조회만 진행할 경우 트랜잭션으로 묶일 이유가 없다.예시 (은행 계좌 이체)계좌 이체는 인출과 입금의 두 과정으로 이루어진다. 인출은 성공했는데, 입금이 실패하는 경우가 생기는 상황이 생기면 안 되며, 두 과정은 동시에 성공하거나 실패해야 한다. 이를 Atomic하다고 하며, 이런 과정들은 트랜잭션으로 묶어주어야 한다.아래의 코드에서는 마치 하나의 명령어처럼 처리된다. 즉 모두 성공하거나 실패하는 두 경우..
숙제TableFieldssession_timestampsessionId (string), ts (timestamp)user_session_channeluserid (integer), sessionid (string), channel (string)session_transactionsessionid (string), refunded (boolean), amount (integer)channelchannelname (string)사용자 별로 처음 채널과 마지막 채널 알아내기ROW_NUMBER vs FIRST_VALUE / LAST_VALUE아래의 코드는 userid가 251인 사용자의 channel을 확인할 수 있다.SELECT ts, channelFROM raw_data.user_session_channe..
JOIN 소개JOIN이란?두 개 이상의 테이블을 공통 필드를 가지고 merge하는 데 사용된다. 이는 스타 스키마로 구성된 테이블로 분산돼 있던 정보를 통합하는 데 사용된다. 6개의 JOIN 방법이 존재하지만, 대부분은 LEFT JOIN과 INNER JOIN으로 충분하다.JOIN 문법JOIN 방식에 따라 ____에는 INNER, FULL, LEFT, RIGHT, CROSS가 들어갈 수 있다.SELECT A.*, B.*FROM raw_data.table1 A____ JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2WHERE A.ts >= '2019-01-01';JOIN 시 고려할 점중복 레코드가 없고, Primary Key Uniqueness가 ..