본문 바로가기
개발/오라클

[Oracle] 오라클 KEEP 사용방법

by Jxdn 2020. 4. 1.
반응형

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을 사용하는게 좋지 않을까 합니다.

반응형

댓글