-
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 [..])