oracle 최신날짜별 데이터 뽑기 질문드립니다. 0 2 4,721

by 너구링 [Oracle 기초] oracle [2018.05.08 15:49:38]


SELECT BASEDATE AS 날짜,
    BASETIME AS 시간,
    CATEGORY AS 요일,
    FCSTVALUE AS 카테고리
FROM FHVF01L
WHERE BASEDATE IN
(
    SELECT BASEDATE FROM
    (
        SELECT DISTINCT BASEDATE
        FROM FHVF01L
        WHERE RESULTCODE = '0000'
        ORDER BY BASEDATE DESC
    )
    WHERE ROWNUM <= 3
);  -- 최근 3일 데이터 구하기

위의 쿼리 조회 결과는

날짜 시간 요일 카테고리
20180507 1800 POP 10
20180507 1700 PTY 0
20180508 1800 R06 0
20180508 1700 POP 10
20180509 1900 PTY 0
20180509 1700 R06 0

 

위와 같은 결과를 날짜별 최신시간 데이터만 표출되도록 하고싶은데.. 가능한지 궁금합니다.

가능하다면 어떤 함수를 사용해야 하는지 힌트 부탁드립니다..

by 고수가되고싶어요 [2018.05.08 16:11:00]
ROW_NUMBER() OVER(PARTITION BY 날짜 ORDER BY DESC 시간) AS RN 
WHERE RN =1 
이거 이용하세염 

 


by 마농 [2018.05.08 16:29:51]
SELECT basedate  AS 날짜
     , basetime  AS 시간
     , category  AS 요일
     , fcstvalue AS 카테고리
  FROM (SELECT basedate, basetime, category, fcstvalue
             , ROW_NUMBER() OVER(PARTITION BY basedate ORDER BY basetime DESC) rn
          FROM (SELECT basedate, basetime, category, fcstvalue
                     , DENSE_RANK() OVER(ORDER BY basedate DESC) dr
                  FROM fhvf01l
                 WHERE resultcode = '0000'
                )
         WHERE dr <= 3
        )
 WHERE rn  = 1
;

 

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