반응형
결과 테이블에서 원하는 컬럼의 첫 번째 값을 가져올 때는 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 |