ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - F/L_value, LAG,LEAD
    스터디 공유용 2024. 5. 14. 11:49
    First_value(event_date )OVER (Partition BY player_id order by event_date) as first_log,
    Lead(event_date )OVER (Partition BY player_id order by event_date) as second_log

    1) FIRST_VALUE, LAST_VALUE 함수의 이해

    - FIRST_VALUE : 선택된 레코드들 중 특정한 컬럼을 기준으로 시작 값(처음 값)을 출력합니다.

    - LAST_VALUE : 선택된 레코드들 중 특정 컬럼을 기준으로 마지막 레코드의 값(현재 레코드 또는 그룹/전체 중 마지막 값)을 출력니다.

     

    (1) 기본식 : 컬럼M의 값을 기준으로 정렬했을 때 첫번째 레코드 / 마지막 레코드의 컬럼K 값을 출력하는 경우

    first_value(컬럼K) over(order by 컬럼M),
    last_value(컬럼K) over(order by 컬럼M)

    (2) 기본식 : 컬럼M의 값을 기준으로 정렬했을 때 첫 번재 / 마지막 레코드의 컬럼K 값을 출력하는 경우, 컬럼M의 값 정렬 기준을 내림차순(역순)으로 할 시

    first_value(컬럼K) over(order by 컬럼M desc),
    last_value(컬럼K) over(order by 컬럼M desc)

    (3) 기본식 : 컬럼L을 기준으로 한 그룹별로 컬럼M의 값에 따라 정렬 시 첫 번째 / 마지막 레코드의 컬럼K값을 출력

    first_value(컬럼K) over(partition by 컬럼L order by 컬럼M),
    last_value(컬럼K) over(partition by 컬럼L order by 컬럼M)

    (4) 기본식 : LAST_VALUE에 현재 레코드 값이 아닌 각 그룹별 마지막 레코드의 컬럼K 값을 출력할 경우

    first_value(컬럼K) over(partition by 컬럼L order by 컬럼M),
    last_value(컬럼K) over(partition by 컬럼L order by 컬럼M rows between unbounded preceding and unbounded following)

     

     

     

    LAG - 이전행 조회

    SELECT LAG([대상 컬럼], [이전 offset], [기본값]) OVER (PARTITION BY [..] ORDER BY [..])

     

    LEAD - 다음행 조회

    SELECT LEAD([대상 컬럼], [다음 offset], [기본값]) OVER (PARTITION BY [..] ORDER BY [..])

     

Designed by Tistory.