sailorCat
카테고리
작성일
2022. 2. 28. 06:30
작성자
sailorCat
728x90

세 가지의 테이블을 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는 의미가 없기 때문에 쓰지 않았다.

순서를 정해서 저장해도 데이터베이스에는 컴퓨터가 정하는 순서로 저장되기 때문이다.

728x90