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 |
위와 같은 결과를 날짜별 최신시간 데이터만 표출되도록 하고싶은데.. 가능한지 궁금합니다.
가능하다면 어떤 함수를 사용해야 하는지 힌트 부탁드립니다..
ROW_NUMBER() OVER(PARTITION BY 날짜 ORDER BY DESC 시간) AS RN WHERE RN =1 이거 이용하세염
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
;