说我有一张桌子可以跟踪球员和球员。根据日期的最后得分。
示例记录
playerA 100 March3
playerA 120 March4
playerA 10 March10
playerB 89 March11
playerB 50 March11
playerC 200 March12
我想知道所有那些在某一天的分数或评分下降了80%的球员(与之前的分数相比)
如何围绕这个写一个有效的查询?
答案 0 :(得分:1)
ANSI标准方法是使用lag()
。这假定最后一列是真正的日期,而不是一些模糊的字符串表示。
这个想法是:
select t.*
from (select t.*, lag(score) over (partition by player order by date) as prev_score
from t
) t
where prev_score <= score * (1 - 0.8)