Continuous Challenge

[불친절한 SQL 프로그래밍] [14장] 분석 함수 - 14.2 분석 함수 (LAG, LEAD, LISTAGG 함수) 본문

Study/불친절한 SQL 프로그래밍

[불친절한 SQL 프로그래밍] [14장] 분석 함수 - 14.2 분석 함수 (LAG, LEAD, LISTAGG 함수)

응굥 2019. 12. 6. 16:57
728x90
728x90

379p

 

14.2.6 기타 함수

 

LAG 함수

LAG 함수는 현재 행에서 offset 이전 행의 value_expr을 반환한다. offset은 행 기준이며 기본값은 1이다. default에 이전 행이 없을 경우 반환할 값을 지정할 수 있다. default의 기본값은 널이다. 

LAG (value_expr [, offset [, default]]) [IGNORE NULLS] 
	OVER ([query_partition_clause] order_by_clause)

c1열은 직전 행의 sal, c2열은 3행 이전 행의 sal을 반환한다.
c1열은 기본값이 999이므로 2행 이전 행이 존재하지 않는 ALLEN, WARD에서 999가 반환된다. MARTIN은 이전 행이 널이지만 IGNORE NULLS 옵션으로 인해 두번 째 행의 값인 500이 반환된다.
comm_n열은 comm이 널인 경우 comm이 존재하는 선행 행의 comm으로 값을 채운다.
c1 열은 LAG 함수를 사용하여 sal의 증감률을 계산한다. hiredate가 1981-02-22인 행의 sal(1250)가 직전 sal(1600)의 0.78(=1250/1600) 수준으로 감소한 것을 확인할 수 있다.

 

LEAD 함수

LEAD 함수는 현재 행에서 offset 이후 행의 value_expr을 반환한다.

LEAD (value_expr [, offset [, default]]) [IGNORE NULLS]
	OVER ([query_partition_clause] order_by_clause)

c1열은 다음 행의 sal, c2열은 3행 이후 행의 sal을 반환한다.
LEAD 함수는 LAG 함수와 반대로 동작하므로 내림차순으로 정렬하면 LAG 함수와 동일한 결과를 얻을 수 있다.

 

LISTAGG 함수

LISTAGG 함수는 measure_expr를 order_by_clause로 정렬한 후 delimiter로 구분하여 연결한 값을 반환한다. delimiter의 기본값은 널이다.

 

 

 

728x90
728x90
Comments