Database/SQL

Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

리커니 2015. 12. 22.
반응형

 

 

Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

 

그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법

 

쿼리를 짜다보면 가장 큰, 가장 작은 값을 가져와야 할 때가 있다.

 

이럴 땐 MAX() 나 MIN()함수를 사용하여 해당 컬럼을 가져온다.

그런데, 이렇게 MAX 나 MIN 함수로 가져온 값이 있는 행중에 다른 컬럼을 가져와야 한다면

어떻게 해야 할까?

 

KEEP의 사용법을 모르는 경우라면 서브쿼리를 사용하여 가져오려 할 것이다.

예)

 

SELECT 컬럼A

   FROM 테이블A

 WHERE 컬럼B = (SELECT MAX(컬럼B)
                      FROM 테이블A)

 

 

 

물론 값은 같다.

하지만 조건없이 구현이 가능하다.

 

KEEP()함수을 사용하여 보자.

예)

SELECT MAX(컬럼A)KEEP(DENSE_RANK FIRST ORDER BY 컬럼B DESC)
    FROM 테이블A

 

설명은 하자면 컬럼B로 ORDER BY 한 후 가장 큰값이 있는 행의 컬럼A를 가져오는 것이다.

 

이처럼 간단한 경우라면 서브쿼리를 쓰던 KEEP() 함수를 쓰던

별 차이가 없어 보이지만

쿼리가 복잡해지고 서브에 서브쿼리를 사용하는 경우라면 간단히 원하는 값을 가져올 수 있으니

유용하게 사용하자.!

 

반응형

댓글

💲 추천 글