반응형
KEEP 단어에서 풍기는 의미처럼 정렬을 통해 나온 값을 KEEP(유지) 해놓고 해당 ROW의 다른 컬럼을 출력하고 싶을 때 사용하는 함수입니다.
KEEP 은 주로 단독으로 사용하기 보다는 FIRST, LAST 와 함께 사용합니다.
즉 FIRST, LAST의 기준에 따라 MAX, MIN의 의미를 부여할 수 있습니다.
예를 들면,
"쇼핑몰 상품 중 가장 비싼 상품의 가격은? "
이렇게 할 경우 단순히 GROUP BY, MAX()를 사용하면 결과가 나옵니다.
"쇼핑몰 상품 중 가장 비싼 상품의 이름은?"
이런 경우 가격 MAX를 한다음 서브쿼리나 다른 방법으로 이름을 가져와야 합니다.
이럴 경우 KEEP 문법을 통해 한번에 찾아올 수 있습니다.
사용예
SELECT MIN(NAME) KEEP ( DENSE_RANK FIRST ORDER BY PRICE ) AS MIN_PRICE_NAME
, MAX(NAME) KEEP ( DENSE_RANK LAST ORDER BY PRICE ) AS MAX_PRICE_NAME
FROM ITEM
실제 동작은 서브쿼리와 차이가 없습니다만, 소스의 간결함과 유지보수성을 생각하면 KEEP을 사용하는게 좋지 않을까 합니다.
반응형
'개발 > 오라클' 카테고리의 다른 글
[Oracle] 오라클 데이터 복구 (TIMESTAMP) (0) | 2021.12.01 |
---|---|
[Oracle] 오라클 Null 처리 NVL, NVL2 사용방법 (0) | 2020.04.02 |
[Oracle] 오라클 소수점 올림/내림/반올림/버림 사용방법 (0) | 2020.04.01 |
[Oracle] 오라클 시노님(Synonym) 사용방법(생성/조회/삭제) (0) | 2020.03.31 |
[Oracle] 오라클 OVER() 함수 사용방법 (OVER() PARTITION BY ~ ) (0) | 2020.03.31 |
댓글