检索具有最新发布日期的每个城市最近 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 by
与 group 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;
我需要检索每个城市最近 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 by
与 group 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;