세 가지의 테이블을 JOIN 하여 사용한다.
여기에서 session_timestamp, user_session_channel 두 개의 테이블은 sessionId 가 같은 수로 존재하지만
session_transaction 테이블에는 sessionId가 덜 존재한다.
그래서 두 테이블은 Inner JOIN 하고, session_transaction 테이블은 LEFT JOIN한다.
없는 sessionId는 NULL값으로 채워지게 된다.



매칭이 안되는 sessionId가 있는지 알아본다.
두 개의 방향을 모두 검사해야 한다.

FROM schema.table1 A
JOIN schema.table2 B ON A.primary = B.primary
LEFT JOIN schema.table3 C ON A.primary = C.primary
이런 식으로 JOIN을 확장해 나갈때 FROM에 쓰인 테이블1의 A를 기준으로 하나씩 덧붙이게 된다.

paidUsers/uniqueUsers AS conversionRate
여기서 타입 캐스팅을 안했기 때문에 int 값이 나온다.
paidUsers::float/uniqueUsers AS conversionRate
여기서 타입을 float으로 나오게 할 수 있지만 소수점 아래 몇번째까지 나와야 하는지 정하지 않았다.
ROUND(paidUsers*100.0/uniqueUsers, 2) AS conversionRate
소수점 아래 2번째에서 반올림 한다.
paidUsers*100.0에서 소수점을 붙였기 때문에 타입 캐스팅을 안해도 float형태로 나온다.
ROUND(painUsers*100.0/NULLIF(uniqueUsers, 0), 2) AS conversionRate
여기서는 추가로 uniqueUsers 값이 0일 경우 NULL을 반환한다.
NULL은 사칙연산을 해도 NULL이기 때문이다.

CTAS에서 ORDER BY는 의미가 없기 때문에 쓰지 않았다.
순서를 정해서 저장해도 데이터베이스에는 컴퓨터가 정하는 순서로 저장되기 때문이다.
'SQL > AWS Redshift' 카테고리의 다른 글
| AWS Redshift colab db sql " " COALESCE (0) | 2022.02.28 |
|---|---|
| Redshift AWS DB SQL Boolean (0) | 2022.02.27 |
| AWS Redshift 쿼리 db sql JOIN 실습 (0) | 2022.02.26 |
| Join의 종류 DB SQL 쿼리 (0) | 2022.02.25 |
| AWS Redshift colab 쿼리 sql CTAS 테이블 생성 실습 (0) | 2022.02.24 |