안녕하세요. GROUP BY 시에 최대값을 가져오는 구문 질문 드립니다.
MAX를 사용하지 않았을 때의 조회 결과
| 월1 | 월2 | 결과 |
| 202306 | 202308 | 8 |
| 202307 | 202308 | 17 |
| 202306 | 202308 | 30 |
=> 월1과 월2로 묶어 결과의 최대값을 가져오고 싶습니다.
SELECT
월1, 월2, MAX(가져올값)
FROM 테이블
GROUP BY 월1, 월2
이런식으로 쓰면 결과가
| 월1 | 월2 | 결과 |
| 202306 | 202308 | 8 |
| 202307 | 202308 | 17 |
최대값을 가져오지 못하더라구요 (202306에 30이 아닌 8로 들어감)
그래서 서브쿼리를 여기저기 사용해보았는데도 결과가 똑같아서 도움 요청합니다...
값이 숫자(8)가 아닌 문자('8')인지 확인해 보세요.
문자에서는 '8' 이 '30' 보다 큰 것이 맞습니다.
WITH t AS
(
SELECT 8 n -- 숫자 컬럼
, '8' v -- 문자 컬럼
UNION ALL SELECT 30, '30'
)
SELECT MAX(n) n -- 숫자 컬럼 맥스 -> 30
, MAX(v) v -- 문자 컬럼 맥스 -> 8
, MAX(v + 0) x -- 문자를 숫자로 치환하여 맥스 -> 30
FROM t
;