동일 데이터 중 마지막 업데이트만 조회되도록 0 2 405

by 후루잉 [SQL Query] [2019.07.18 11:45:45]


안녕하세요~

일하다가 궁금한게 생긴 초급 개발자 입니다.

no 국가 날씨 날자
1 한국 맑음 2019.07.17
2 한국 맑음 2019.07.19
3 미국 2019.07.11
4 호주 안개 2019.07.10

위 리스트에서 

동일한 국가 날씨 중 제일 마지막 업데이트 된 정보만 보고 싶다면

어떻게 해야 할까요?

저 상황에서는 2, 3, 4 만 출력되야 합니다ㅠ

 

by 열심열심 [2019.07.18 12:09:00]

select * from (select no, 국가, 날씨, 날짜 rank() over(partition by 국가  order by 날짜 desc)  rn from t)

where rn = 1


by 생각 [2019.07.18 14:15:32]
WITH T1 as
(
  SELECT '1' RN, '한국' COUNTRY, '맑음' WEATHER, '2019.07.17' IL FROM DUAL
    UNION ALL
  SELECT '2' RN, '한국' COUNTRY, '맑음' WEATHER, '2019.07.19' IL FROM DUAL
    UNION ALL
  SELECT '3' RN, '미국' COUNTRY, '비' WEATHER, '2019.07.11' IL FROM DUAL
    UNION ALL
  SELECT '4' RN, '호주' COUNTRY, '안개' WEATHER, '2019.07.10' IL FROM DUAL
)
-- 1) 동일한 국가 날씨 중에서
-- 2) 마지막 업데이트 된 정보만 표기 
-- 3) 정렬 조건이 없네요!
 SELECT * 
   FROM (
        SELECT Row_Number() OVER(PARTITION BY COUNTRY ORDER BY IL) RN
              ,COUNTRY
              ,WEATHER
              ,IL
          FROM T1
        )
  WHERE RN=1
  ORDER BY IL DESC;
    

 

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