SQL MAX 0 4 3,214

by 스캇 [SQL Query] MAX [2013.08.14 11:54:16]


아래의 테이블을 원하는 값으로 조회하려고 하는데. 잘안되네요.


select max(B),C FROM TEST
select max(B),C FROM TEST group by A

제가 원하는 값은 B값 MAX 기준으로 C 필드랑 값이 조회 하고 싶습니다. 한수 가르침 부탁 드립니다.

테이블 TEST

A B C
1 B-1 EEE
1 B-2 FFFF
1 B-3 F2222
원하는 값

B C
B-3 F2222
by 아린 [2013.08.14 12:02:37]
WITH t(A, B, C) AS(
SELECT '1', 'B-1', 'EEE'   FROM dual UNION ALL
SELECT '1', 'B-2', 'FFFF'  FROM dual UNION ALL
SELECT '1', 'B-3', 'F2222' FROM dual
)
SELECT a
     , MAX(b) b
     , MAX(c) KEEP(DENSE_RANK LAST ORDER BY b) c
  FROM t
 GROUP BY a
 
SELECT *
  FROM t
 WHERE (a, b) IN (SELECT a, MAX(b)
                    FROM t
                   GROUP BY a)

by 스캇 [2013.08.14 12:44:16]
답변 감사 드립니다.

max 는 무조건 group by 해야 하는거죠?

by 아린 [2013.08.14 12:52:25]
그렇진 않습니다.  

위에 GROUP BY 한것은  A컬럼별로 나타낼려고 한 거고요.
만약, MAX  1건만 필요하다면 GROUP BY 빼셔도 됩니다.

SELECT MAX(b) b
     , MAX(c) KEEP(DENSE_RANK LAST ORDER BY b) c
  FROM t 

by 스캇 [2013.08.14 13:21:41]
네. 감사드립니다. 정확히 이해 되었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입