최대값이 여러개일 경우 가장 최신 날짜의 최대값만 추출 0 3 11,136

by 전욱 [Oracle 기초] [2013.11.27 22:48:04]


안녕하세요.

 ID               upd_date        price    
a11
  2013-10-01     2
s12  2013-11-27     5
s13  2013-11-26     5
s14  2013-11-25     5
s15  2013-11-24     3
s16  2013-11-23     1


위 테이블에서 price 가 최대값을 뽑으면서 최대값이 여러개일 경우에는
그 중에 가장 최근날짜인 행 하나만 뽑으려고 합니다.
인터넷을 찾아봐도 기본지식이 부족하여 필요한 검색을 못하고 있어
질문 남깁니다.
도움 부탁드리겠습니다(--)(__)

by 용근님 [2013.11.27 22:58:21]
Row_number / max keep를 검색해보세요

Row_number() over(order by price desc , upd_date desc )


by 마농 [2013.11.28 08:30:54]
-- 1. Order By & Rownum --
SELECT *
  FROM (SELECT *
          FROM t
         ORDER BY price DESC, upd_date DESC
        )
 WHERE ROWNUM <= 1
;
-- 2. Row_Number --
SELECT id, upd_date, price
  FROM (SELECT id, upd_date, price
             , ROW_NUMBER() OVER(ORDER BY price DESC, upd_date DESC) rn
          FROM t
        )
 WHERE rn = 1
;
-- 3. Max() Keep --
SELECT MAX(id      ) KEEP(DENSE_RANK LAST ORDER BY price, upd_date) id
     , MAX(upd_date) KEEP(DENSE_RANK LAST ORDER BY price, upd_date) upd_date
     , MAX(price   ) price
  FROM t
;

by 전욱 [2013.11.29 00:54:24]
상세한 답변 감사합니다^^
덕분에 스킬 하나 추가되었습니다.
감사합니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입