일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- VPC
- 데이터 시각화
- AWS
- django
- Snowflake
- 코딩테스트
- GCP
- 팀 프로젝트
- Spark
- SQL
- Selenium
- airflow
- solvesql
- Til
- 코테 연습
- PCCP
- superset
- sql챌린지
- sqlsolve
- beuatifulsoup
- Tableau
- 데브코스
- 코딩 테스트
- 슈퍼셋
- cloud platform
- HTML
- Kafka
- 데이터 엔지니어
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
데이터 엔지니어링 24일차 본문
학습내용
Join이란 ?
SQL조인은 두개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용된다. 이는 스타스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용된다.
왼쪽 테이블을 LEFT라고 하고 오른쪽 테이블을 RIGHT라고 하면 JOIN의 결과는 방식에 상고나없이 양쪽의 필드를 모두 가진 새로운 테이블을 만들어내게 된다. 조인의 방식에 따라 다음 두 가지가 달라진다
1. 어떤 레코드들이 선택되는지?
2. 어떤 필드들이 채워지는지?
조인의 종류
Join시 고려해야 할점
1. 먼저 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 체크해야한다.
2. 조인하는 테이블들간의 관계를 명확하게 정의해야한다.
3. 어느 테이블을 베이스로 잡을지 결정해야한다.(From에 사용할지)
BOOLEAN타입
: True or False 두개만 리턴
NULL값 비교
NULL값 비교는 항상 is, is not으로 수행
그렇지 않으면 잘못된 결과가 나옴
NULLIF함수
0으로 나눌 경우 divide by 0 에러 발생
A/NULLIF(B,0) : B가 0일 때 0 대신 NULL로 계산
COALESCE 함수
: NULL값을 다른값으로 바꿔주는 함수
%%sql
SELECT
value,
COALESCE(value, 0)
FROM raw_data.count_test;
숙제풀이
채널별 월 매출액 테이블 만들기
%%sql
DROP TABLE IF EXISTS adhoc.suha_monthly_channel_summary;
CREATE TABLE adhoc.suha_monthly_channel_summary AS
SELECT LEFT(ts, 7) "month", -- "year month"
channel,
COUNT(DISTINCT usc.userid) uniqueUsers,
COUNT(DISTINCT CASE WHEN amount > 0 THEN usc.userid END) paidUsers,
ROUND(paidUsers*100.0/NULLIF(uniqueUsers, 0),2) conversionRate,
SUM(amount) grossRevenue,
SUM(CASE WHEN refunded is False THEN amount END) netRevenue
FROM raw_data.user_session_channel usc
LEFT JOIN raw_data.session_timestamp t ON t.sessionid = usc.sessionid
LEFT JOIN raw_data.session_transaction st ON st.sessionid = usc.sessionid
GROUP BY 1, 2
ORDER BY 1, 2;
느낀 점
저번 숙제를 하고 오늘 숙제풀이를 보면서 sql공부가 아직 부족하다는 것을 느꼈다.
creat문을 위에 쓰고 as만 뒤에 붙여서 제일 처음에 써주면 테이블이 생성되는 걸 저번주에 배울땐 어렵게 느껴졌는데 직접 실습을 해보니 한문장만 위에 붙이면 되는것이라서 어렵지 않고 간편한 문장이란것을 배웠다
'데브코스' 카테고리의 다른 글
데이터 엔지니어링 26일차 TIL (0) | 2024.04.29 |
---|---|
데이터 엔지니어링 25일차 TIL (1) | 2024.04.26 |
데이터 엔지니어링 TIL 23일차 (0) | 2024.04.24 |
데이터 엔지니어링 TIL 22일차 (0) | 2024.04.23 |
데이터 엔지니어링 21일차 TIL (0) | 2024.04.22 |