2017-03-16 6 views
0

인 각 도시의 최근 5 일 예보를 검색합니다. 각 도시에 대한 최근 5 일 예측 정보를 검색해야합니다.최근 발행일이

내 표는 진짜 문제는 발행일 함께 enter image description here

아래처럼 보인다.

도시에는 동일한 날짜의 여러 예측 정보가 포함될 수 있습니다. 나는 다음과 같은 시도했지만 예상 된 결과

SELECT * FROM(
SELECT 
    ROW_NUMBER() OVER (PARTITION BY CITY_ID ORDER BY FORECAST_DATE DESC, ISSUE_DATE DESC) AS rn, 
    CITY_ID, FORECAST_DATE, ISSUE_DATE 
FROM 
    FORECAST  
GROUP BY FORECAST_DATE 
) WHERE rn <= 5 

enter image description here

을 제공하지 않은

나는 예측 날짜를 기준으로 최신 발행일 및 그룹과 각 도시에 대한 최근 5 개 레코드를 검색 할 필요가

제안이나 조언이 도움이 될 것입니다.

답변

1

이 각 도시에 대한 가장 최근의 오일을 통해 매일 최신 발행 예측을 얻을 것이다 시도

with CTE as 
(
select t1.*, 
     row_number() over (partition by city_id, forecast_date order by issue_date desc) as r_ord 
from Forecast 
) 
select CTE.* 
from CTE 
where r_ord <= 5 
+0

덕분에 @ MT0는 매력처럼 작동합니다. – user3535945

0

Partition bygroup by처럼 작동합니다. 기능 만합니다.

SELECT * FROM(
    SELECT 
     ROW_NUMBER() OVER (PARTITION BY CITY_ID, FORECAST_DATE order by ISSUE_DATE DESC) AS rn, 
     CITY_ID, FORECAST_DATE, ISSUE_DATE 
    FROM 
     FORECAST  
    ) WHERE rn <= 5 
+0

가 작동하지 , 귀하의 솔루션에서 그것을보고 그것은 예측 _ 날짜에 따라 city_id 따라서 r_ord <= 5 같은 날짜, 같은 도시에 대한 기록을 반환합니다 – user3535945

0

보십시오 : 예상대로

SELECT * 
FROM (
    SELECT f.*, 
     DENSE_RANK() OVER (PARTITION BY city_id ORDER BY forecast_date DESC) 
      AS forecast_rank, 
     ROW_NUMBER() OVER (PARTITION BY city_id, forecast_date ORDER BY issue_date DESC) 
      AS issue_rn 
    FROM Forecast f 
) 
WHERE forecast_rank <= 5 
AND issue_rn = 1; 
+0

예상대로 작동하지 않습니다. – user3535945

+0

일일 수에 제한없이 매일 처음 발행 된 일기 예보가 매일 제공됩니다. OP가 원하는 것이 아닙니다. – MT0