RelatedField

  • PrimaryKeyRelatedField : 기본 키를 사용하여 관계의 대상을 나타내는 데에 사용
  • StringRelatedField : str 메서드를 사용하여 관계의 대상을 나타내는 데에 사용
  • SlugRelatedField : 특정 대상의 필드를 사용하여 관계의 대항을 나타내는 데에 사용
    사용법 : SlugRelatedField(slug_field="특정 필드명")
  • HyperlinkedRelatedField : 하이퍼 링크를 제공할 수 있는 RelatedField
    사용법 : HyperlinkedRelatedField(view_name='urls에서 지정해준 name속성 값')

UNION(합집합)

  • 여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌
  • UNION vs UNION ALL
    • UNION은 중복을 제거

EXCEPT(MINUS)

  • 하나의 SELECT 결과에서 다른 SELECT 결과를 빼주는 것이 가능

INTERSECT(교집합)

  • 여러 개의 SELECT문에서 같은 레코드들만 찾아줌

COALESCE(Expression1, Expression2, ...)

  • 첫번째 Expression부터 값이 NULL이 아닌 것이 나오면 그 값을 리턴하고 모두 NULL이면 NULL을 리턴.
  • NULL 값을 다른 값으로 바꾸고 싶을 때 사용

NULLIF(Expression1, Expression2)

  • Expression1과 Expression2의 값이 같으면 NULL을 리턴한다.

LISTAGG 

  • GROUP BY에서 사용되는 Aggregate 함수 중의 하나
  • ex) 사용자 ID별로 채널을 순서대로 리스트
SELECT
  userid,
  LISTAGG(channel, '구분자') WITHIN GROUP (ORDER BY ts) channels FROM raw_data.user_session_channel usc
  -- userid 값으로 기준으로 channel을 각 레코드의 ts값 기준 오름차순으로 나열하라!(채널과 채널 사이에 구분자를 넣을 수 있다)
JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid
GROUP BY 1
LIMIT 10;

WINDOW

  • Syntax
    • function(expression) OVER ( [ PARTITION BY expression] [ ORDER BY expression ] )
  • Useful function
    • ROW_NUMBER, FIRST_VALUE, LAST_VALUE, LAG
    • Math functions: AVG, SUM, COUNT, MAX, MIN, MEDIAN, NTH_VALUE
  • LAG
SELECT usc.*, st.ts,
  LAG(channel,1) OVER (PARTITION BY userId ORDER BY ts) prev_channel
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid
ORDER BY usc.userid, st.ts
-- 이전 채널 찾기(ts를 내림차순으로 하면 다음 채널 찾기도 가능)

 

JSON PARSING Functions

  • JSON의 포맷을 이미 아는 상황에서만 사용가능한 함수
  • JSON String을 입력으로 받아 특정 필드의 값을 추출가능 (nested 구조 지원)

'데브코스 > Week 5' 카테고리의 다른 글

Week 5 - 4  (0) 2024.04.11
Week 5 - 3  (0) 2024.04.10
Week 5 - 2  (0) 2024.04.09
Week 5 - 1  (0) 2024.04.08

+ Recent posts