检索具有最新发布日期的每个城市最近 5 天的天气预报

Retrieve recent 5 days forecast for each cities with latest issue date

我需要检索每个城市最近 5 天的天气预报信息。

我的table如下所示

真正的问题在于发布日期。

城市可能包含多个发布日期不同的同一日期的预报信息。

我需要检索每个城市的最近 5 条记录,具有最新的发布日期并按预测日期分组

我试过类似下面的方法,但没有给出预期的结果

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

任何建议或建议都会有所帮助

Partition bygroup by 类似,但仅用于函数。

尝试

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

试试这个

 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

这将获取每个城市最近 5 天内每天发布的最新预报:

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;