问题描述
我正在寻找一个查询来尝试在每个事件之前获取一组世界排名。这最终将用于线性回归模型,以查看使用世界排名预测事件结果的准确性。注意。同一天可以有多个锦标赛。
解决方法
您可以使用 lag()
获取每个事件之前的时间段。然后join
:
select e.*,r.*
from rankings r left join
(select e.*,lag(event_date) over (order by event_date) as prev_event_date
from events e
) e
on r.ranking_date < event_date and
(r.ranking_date >= prev_event_date or prev_event_date is null)
,
我认为 INNER JOIN 可以解决您的问题
SELECT E.Event,E.Event_Date,R.PlayerName,R.World_Ranking
FROM EVENTS_TABLE E
INNER JOIN RANKINGS_TABLE R on MONTH(E.Event_Date) = MONTH(R.Ranking_Date)
AND YEAR(E.Event_Date) = YEAR(R.Ranking_Date)