Mssql Max 함수 사용법 1

by Sql어렵다 [SQL Query] [2023.05.08 08:09:34]


A B C D E
1 A01 100 01 A0001
2 A02 200 01 A0002
3 A02 200 01 A0003
4 A02 200 02 A0004
5 A03 100 02 A0005
6 A03 200 02 B0006
7 A03 100 01 B0007
8

A04

100 01 B0008

위와 같이 표가 있을 때

A B C D E
1 A01 100 01 A0001
2 A02 200 01 A0002
6 A03 200 02 B0006
8 A04 100 01 B0008

이렇게 출력하고 싶습니다

B를 기준으로 그룹해서 C를 기준으로 max값 하나가 추출되는 형태입니다 만약 C의 값이 동일하다면 랜덤값 아무거나 상관없습니다다가능할까요...?

by 마농 [2023.05.08 08:34:41]
-- 아무거나 보다는. 유일값을 추출할 수 있는 정렬 기준을 추가하는 것을 추천합니다.
SELECT *
  FROM (SELECT a, b, c, d, e
--           , ROW_NUMBER() OVER(PARTITION BY b ORDER BY c DESC) rn    -- 아무거나
             , ROW_NUMBER() OVER(PARTITION BY b ORDER BY c DESC, a) rn -- 유일기준
          FROM t
        ) a
 WHERE rn = 1
;

 

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