본문 바로가기
BigData TIL/Database

[Oracle] FIRST_VALUE , LAST_VALUE

by xxub 2022. 1. 12.
반응형

결과 테이블에서 원하는 컬럼의 첫 번째 값을 가져올 때는 FIRST_VALUE 함수를 사용하고, 마지막 값을 가져올 때는 LAST_VALUE 함수를 사용한다. 오라클 내에서만 사용 가능한 함수이다.

ex) table A

ENAME GROUP AGE
하쿠 B 22
하울 A 23
치히로 B 24
소피 A 21

 

- FIRST_VALUE(Oracle only)

  • 처음 입력한 값 반환

- LAST_VALUE(Oracle only)

  • 마지막 입력한 값 반환
FIRST_VAULE | LAST_VALUE (컬럼명) over ()

ex) GROUP별 AGE가 가장 높은 사람과 가장 낮은 사람 
select ENAME
      , GROUP
      , AGE
      , first_value(ENAME) over(partition by group order by age desc) as num_first
      , last_value(ENAME) over (partition by group order by age desc) as num_last
      from tableA ;

결과 테이블 )

ENAME GROUP AGE num_first num_last
하쿠 B 22 치히로 하쿠
하울 A 23 하울 소피
치히로 B 24 치히로 하쿠
소피 A 21 하울 소피

 

 

[FIRST_VAULE , LAST_VALUE와 함께 쓸 수 있는 구문] 

1. ORDER BY

  • 지정한 컬럼으로 정렬하여 첫 번째 행의 값 반환

2. PARTITION BY

  • 해당 컬럼의 그룹별로 첫 번째 행의 값 반환

3. IGNORE NULLS

  • 결과 값 중 NULL이 아닌 첫 번째 행의 값 반환
  • LAST_VAULE인 경우 마지막 행의 값이 NULL이 아닌 값으로 반환
  • 모든 값이 NULL인 경우 NULL 반환

4. RESPECT NULLS

  • 행의 순서를 결정할 때 NULL 값 또한 포함할 것을 정의
  • 기본값

 

 

반응형

'BigData TIL > Database' 카테고리의 다른 글

[Oracle] PIVOT, UNPIVOT  (0) 2022.01.17
[Oracle] INTERSECT, MINUS  (0) 2022.01.13
[Oracle] ABS, 절댓값 구하기  (0) 2022.01.11
[Oracle] group by, having절  (0) 2022.01.10
[Oracle] NVL, NVL2  (0) 2022.01.07