-
[11주차 - Day5] 고급 문법 소개 & 실습교육/프로그래머스 인공지능 데브코스 2021. 8. 9. 14:27728x90
5. 트랜잭션과 기타 고급 SQL문법
1. 트랜잭션 소개와 실습
Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법
더보기Atomic? 여러 개의 SQL이 동시에 성공하거나 실패해야 데이터 정합성에 문제가 생기지 않음
3. 기타 고급 문법 소개와 실습
UNION, EXCEPT, INTERSECT
- UNION(합집합) : 여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌
- UNION은 중복을 제거, UNION ALL은 중복 제거하지 않음
- EXCEPT(MINUS) : 하나의 SELECT 결과에서 다른 SELECT결과를 빼줌
- INTERSECT(교집합) : 여러개의 SELECT문에서 같은 레코드들만 찾아줌
COALESCE, NULLIF
- COALSCE(Expression1, Expression2, ...) : 첫번째 Expression부터 값이 NULL이 아닌 것이 나오면 그 값을 리턴하고 모두 NULL이면 NULL을 리턴, NULL값을 다른 값으로 바꾸고 싶을 때 사용
- NULLIF(Expression1, Exppression2) : Expression1과 Expression2의 값이 같으면 NULL리턴
LISTAGG
- LISTAGG : GROUP BY에서 사용되는 AGGREGATE 함수 중 하나
- 어떤 그룹핑된 레코드들을 쭉 이어붙여주는 함수
SELECT userId, LISTAGG(channel,'->') WITHIN GROUP (ORDER BY ts) channels FROM raw_data.user_session_channel usc JOIN raw_data.session_timestamp st ON usc.sessionId=st.sessionId GROUP BY 1 LIMIT 10;
사용자 ID별로 방문했던 채널을 순서대로 리스트해주는 함수
예로 사용자 ID 68인 사람의 방문했던 채널출력
WINDOW
- LAG함수 : 어떤 사용자 세션에서 시간순으로 봤을 때 이전/다음 세션의 채널이 무엇인지 알고 싶다면?
JSON Parsing Functions
JSON의 포맷을 이미 아는 상황에서만 사용가능한 함수
JSON String을 입력으로 받아 특정 필드의 값을 추출가능(nested구조지원)
'교육 > 프로그래머스 인공지능 데브코스' 카테고리의 다른 글
[12주차 - Day2] Spark (0) 2021.08.10 [12주차 - Day1] 11주차 강의 개요 (0) 2021.08.10 [11주차 - Day4] JOIN, 리뷰 (0) 2021.08.08 [11주차 - Day3] GROUP BY, AGGREGATE, CTAS (0) 2021.08.07 [11주차 - Day2] DDL, DML, SELECT (0) 2021.08.07 - UNION(합집합) : 여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌