전체 글 373

클라우드 컴퓨팅(AWS)

클라우드 컴퓨팅이란? 클라우드 컴퓨팅 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한만큼만 비용을 지불하는 방식. 물리적 데이터 센터와 서버를 구입, 소유 및 유지 관리하는 대신, Amazon Web Services(AWS)와 같은 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스와 같은 기술 서비스에 액세스 한다. 클라우드 컴퓨팅의 이점 민첩성 탄력성 비용절감 On demand(사용한 만큼) 관리 용이성 Amazon Web Services(AWS) 전 세계적으로 분포한 데이터 센터에서 200개가 넘는 완벽한 기능의 서비스를 제공하는, 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 플랫폼. 빠르게 성장하는 스타트업, 가장 큰 규모의 엔터프라이즈, 주요 정부 기관을 ..

AWS 클라우드 2023.11.20

Redshift - 기타 고급 문법 소개와 실습

알아두면 유용한 SQL 문법들 UNION, EXCEPT, INTERSECT COALESCE, NULLIF LISTAGG LAG WINDOW 함수 ROW_NUMBER OVER SUM OVER FIRST_VALUE, LAST_VALUE JSON Parsing 함수 UNION, EXCEPT, INTERSECT UNION (합집합) 여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌 UNION vs. UNION ALL UNION은 중복을 제거 UNION SELECT 'keeyong' as first_name, 'han' as last_name UNION SELECT 'elon', 'musk' UNION SELECT 'keeyong', 'han' UNION ALL SELECT 'keeyong' as f..

SQL 2023.11.16

Redshift - 트랜잭션(Transaction)

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

SQL 2023.11.16

Redshift - 복습겸 숙제

1. 사용자별로 처음 채널과 마지막 채널 알아내기 2. Gross Revenue가 가장 큰 UserID 10개 찾기 3. raw_data.nps 테이블을 바탕으로 월별 NPS 계산 1. 사용자별 처음과 마지막 채널 찾기 먼저 사용자 1명을 기준으로 첫 채널과 마지막 채널을 조회하는 방법입니다. SELECT ts, channel FROM raw_data.user_session_channel usc JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid WHERE userid = 251 ORDER BY 1 251번 사용자 단 한명의 첫채널이 맨위 마지막 채널이 맨 마지막으로 오는 쿼리입니다. WHERE 절 조건마다 모든 사용자별 ID를 입력한 ..

SQL 2023.11.16

Redshift - COALESCE, NULLIF, 특수한 필드명 사용방법

NULLIF NULLIF 표현식은 두 인수를 비교하여 동일한 경우에는 NULL을 반환합니다. 동일하지 않으면 첫 번째 인수가 반환됩니다. NULLIF ( expression1, expression2 ) expression1과 expression2가 동일하다면 NULL을 리턴합니다. 반대로 expression1과 expression2가 다르다면 expression1을 리턴합니다. COALESCE 일련의 표현식에서 NULL이 아닌 첫 번째 표현식의 값을 반환합니다. NULL이 아닌 값이 발견되면 목록의 나머지 표현식은 평가되지 않습니다. NVL은 COALESCE와 동일합니다. NVL( expression, expression, ... ) COALESCE( expression, expression, ... )..

SQL 2023.11.16

Redshift - 복습겸 숙제

채널별, 월별 매출액 테이블을 CTAS로 만들기 1. session_timestamp,user_session_channel,session_transaction 3개의 테이블들을 사용합니다. 2. 아래와 같은 필드로 구성합니다. month channel uniqueUsers (총방문 사용자) paidUsers (구매 사용자: refund한 경우도 판매로 고려) conversionRate (구매사용자 / 총방문 사용자) grossRevenue (refund 포함) netRevenue (refund 제외) 1. 혹시 OUT JOIN이 필요한지 테이블 점검 select distinct sessionid from raw_data.session_timestamp minus select distinct session..

SQL 2023.11.16

Redshift - BOOLEAN과 NULL 팁

BOOLEAN 타입 처리 flag = True와 flag is True는 동일한 표현입니다. flag is True와 flag is not False는 동일한 표현이 아닙니다. True가 아닌 NULL도 not False이기 때문입니다. SELECT * FROM raw_data.boolean_test; 위와 같이 True가 2개, False가 2개, Null(None)이 1개 있는 테이블이 있습니다. SELECT COUNT(CASE WHEN flag = True THEN 1 END) true_cnt1, COUNT(CASE WHEN flag is True THEN 1 END) true_cnt2, COUNT(CASE WHEN flag is not False THEN 1 END) not_false_cnt FR..

SQL 2023.11.15

Redshift - JOIN

JOIN SQL 조인은 두 개 혹은 그 이상의 테이블들을 공통 필드를 갖고 머지하는데 사용됩니다. 이는 스타 스키마(star scheme)로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용됩니다. SELECT A JOIN B ON ~ 왼쪽 테이블을 LEFT, 오른쪽 테이블을 RIGHT이라고 가정하면 이해하기 쉽습니다. 위에서는 A가 LEFT, B가 RIGHT 테이블입니다. 95%의 경우는 LEFT JOIN과 RIGHT JOIN을 사용합니다. 5%는 FULL JOIN을 사용하고 RIGHT JOIN은 LEFT JOIN에서 테이블들의 순서만 바꾸면 그만이므로 전혀 사용할 일이 없다고 보셔도 좋습니다. 다양한 종류의 조인 (The Art of PostgreSQL - What is an SQL JOIN?)..

SQL 2023.11.15