2016. 12. 29. 22:31

오라클 함수중 이전ROW의 값 및 다음ROW의 값을 확인 해야 되는 경우가 종종 있습니다.

이럴때 사용하는 함수가 LAG , LEAG 입니다.

 

 

 

1. LAG 함수

 

  - 이전 로우의 값을 리턴 하는 함수 입니다.

  - Syntax >  LAG(expr , offset , default) OVER( ORDER BY 필드)

  - expr 부분에는 필드 및 sum , count , avg , min , max 등이 올수 있습니다.

  - offset 부분에는 몇번째 이전의 로우값을 가져올지 지정 할 수 있습니다.

    (생략 가능하며, 생략시 1이 적용 됩니다.)

  - default 값은 이전로우의 값이 없을 경우 리턴되는 값입니다.

    (생략 가능하며, 생략시 null이 리턴됩니다.)

 

  - 예제) 

   

※ 위의 쿼리를 보면 SAWON 값으로 정렬 후 이전값(GRADE)을 가져오고 있습니다.

        LAG 함수의 인자값중 2번째 값을 2로 할 경우 2번째 이전값을 가져옵니다.

        LAG 함수의 인자값중 3번째 값을 0으로 할 경우 이전값이 없을 경우 0을 리턴합니다.

 

 

2. LEAD 함수

 

  - 이후 로우의 값을 리턴 하는 함수 입니다.

  - Syntax > LEAD(expr , offset , default) OVER( ORDER BY 필드)

  - expr 부분에는 필드 및 sum , count , avg , min , max 등이 올수 있습니다.

  - offset 부분에는 몇번째 이후의 로우값을 가져올지 지정 할 수 있습니다.

    (생략 가능하며, 생략시 1이 적용 됩니다.)

  - default 값은 이전로우의 값이 없을 경우 리턴되는 값입니다.

    (생략 가능하며, 생략시 null이 리턴됩니다.)

 

  - 예제)

    

    ※ 위의 쿼리를 보면 GRADE 값으로 정렬 후 이전값(GRADE)을 가져오고 있습니다.

        LEAD 함수의 인자값중 2번째 값을 2로 할 경우 2번째이후 값을 가져옵니다.

        LEAD 함수의 인자값중 3번째 값을 0으로 할 경우 이후값이 없을 경우 0을 리턴합니다.

 

 

3. LAG LEAD 공통점

  - LAG , LEAD 함수를 사용할 경우 ORDER BY 절에 있는 필드로 정렬을 수행하기 데이터가 ORDER BY 절에 있는 순으로 정렬이 되어 출력 됩니다.

Posted by dlfma1985