如何在多行上使用LAG功能

问题描述 投票:0回答:1

我正在尝试对每个团队的排名使用滞后函数,并将每个团队的价格降低 1。

但是当我尝试使用滞后时。似乎只降低了每个团队 1 人的价格。

我该怎么做?

(见图)

我的数据是黄色的。 蓝色是我想要得到的结果。 但我得到的是绿色。 图片

sql
1个回答
0
投票
  • 正如上面评论中提到的,请不要使用图像作为输入和输出数据,而应使用表格 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
© www.soinside.com 2019 - 2024. All rights reserved.