개발/오라클
[Oracle] 오라클 KEEP 사용방법
Jxdn
2020. 4. 1. 08:49
반응형
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을 사용하는게 좋지 않을까 합니다.
반응형