SQL(오라클) MAX 함수 질문합니다 0 1 6,255

by 즈다 [SQL Query] SQL MAX [2024.08.07 10:56:01]


X라는 테이블의 A라는 키 값을 기준으로 B, C 컬럼의 최대값을 구하고 싶어 아래와 같이 쿼리를 작성했습니다.

SELECT A, MAX(B), MAX(C)

FROM X

GROUP BY A

실제로 X테이블의 B 컬럼은 1,2,3 등 다양한 값을 가지고 있고 이러한 1,2,3 값에 따라 C 컬럼 또한 1,2, 등 다양한 값을 가지고 있습니다.

(EX B값이 1일 때 C는 2 / B값이 2일 때 C는 1 등)

문제는 위의 쿼리를 실행하면 서로 여러 값을 가지고 있는 B, C 컬럼의 최대값만 추출되어 B = 2, C =2 이런 식으로 추출됩니다.

B를 기준으로 B가 최대일 때의 C값, C를 기준으로 C가 최대일 때의 B값을 모두 추출하는 방법이 있을까요?

 

 

by 마농 [2024.08.07 14:13:23]
WITH x AS
(
SELECT 1 a, 1 b, 1 c FROM dual
UNION ALL SELECT 1, 1, 2 FROM dual
UNION ALL SELECT 1, 2, 1 FROM dual
)
SELECT a
     , MAX(b) b
     , MAX(c) KEEP(DENSE_RANK LAST ORDER BY b, c) c
  FROM x
 GROUP BY a
;

WITH x AS
(
SELECT 1 a, 1 b, 1 c FROM dual
UNION ALL SELECT 1, 1, 2 FROM dual
UNION ALL SELECT 1, 2, 1 FROM dual
)
SELECT a, b, c
  FROM (SELECT a, b, c
             , ROW_NUMBER() OVER(PARTITION BY a ORDER BY b DESC, c DESC) rn
          FROM x
        )
 WHERE rn = 1
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입