我正在尝试对每个团队的排名使用滞后函数,并将每个团队的价格降低 1。
但是当我尝试使用滞后时。似乎只降低了每个团队 1 人的价格。
我该怎么做?
(见图)
我的数据是黄色的。 蓝色是我想要得到的结果。 但我得到的是绿色。 图片
正如上面评论中提到的,请不要使用图像作为输入和输出数据,而应使用表格 Markdown 格式的示例输入和输出。
由于您想要对团队排名应用滞后,但在决赛表中您有多列相同的团队排名。为了实现这一目标,我创建了一个带有 team_ranking 和 Price_money 的 cte,使用 lag 来获得所需的结果并将其加入到最终表中
with distinct_team_ranking_money as
(
select
Team_Ranking,
LAG(Price_Money, 1, 0) OVER (ORDER BY Team_Ranking desc) AS price_money
from
(SELECT
distinct
Team_Ranking,
price_money from test
) as T
)
select test.player_id, test.team_ranking, distinct_team_ranking_money.price_money
from
test
left join distinct_team_ranking_money
on distinct_team_ranking_money.Team_Ranking = test.Team_Ranking ;
输出
player_id | 团队排名 | 价格_金钱 |
---|---|---|
131 | 9 | 0 |
289 | 9 | 0 |
83 | 9 | 0 |
236 | 8 | 100 |
154 | 8 | 100 |
230 | 7 | 200 |
72 | 7 | 200 |
200 | 6 | 300 |
174 | 6 | 300 |
326 | 6 | 300 |
261 | 6 | 300 |
60 | 5 | 400 |
181 | 5 | 400 |
387 | 5 | 400 |
34 | 4 | 500 |
144 | 4 | 500 |
377 | 3 | 600 |
222 | 3 | 600 |
112 | 3 | 600 |
16 | 2 | 700 |
36 | 2 | 700 |
299 | 1 | 800 |