You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LAG函数实现多组行的整组奖金下移

问题背景

现有如下输入数据:

player_idteam_rankingprice_money
1319100
2899100
839100
2368200
1548200
2307300
727300
2006400
1746400
3266400
2616400
605500
1815500
3875500
344600
1444600
3773700
2223700
1123700
162800
362800
29911000

期望得到的输出为:

player_idteam_rankingprice_money
13190
28990
8390
2368100
1548100
2307200
727200
2006300
1746300
3266300
2616300
605400
1815400
3875400
344500
1444500
3773600
2223600
1123600
162700
362700
2991800
问题描述

我希望将每个team_ranking组的price_money整体下移一个等级,但执行以下代码后,仅实现了单行price_money下移,而非整组下移:

SELECT Player_id, Team_Ranking,
  LAG(Price_Money, 1, 0) OVER (ORDER BY Team_Ranking desc) AS Price_Money FROM table;

得到的错误输出如下:

Player_idTeam_RankingPrice_Money
28990
839100
1319100
2368100
1548200
2307200
727300
2006300
1746400
3266400
2616400
605400
3875500
1815500
344500
1444600
3773600
2223700
1123700
162700
362800
2991800

请问如何正确实现整组price_money下移的需求?

解决方案

原SQL仅对单行数据应用LAG函数,未按组处理价格。要实现整组下移,需先获取每个team_ranking对应的基准价格,再对基准值按等级排序后使用LAG,最后将处理后的价格关联回原表。

方法一:子查询获取组基准值并关联

WITH rank_prices AS (
    SELECT 
        team_ranking,
        price_money,
        LAG(price_money, 1, 0) OVER (ORDER BY team_ranking DESC) AS new_price
    FROM (
        -- 去重获取每个等级对应的唯一price_money
        SELECT DISTINCT team_ranking, price_money
        FROM your_table
    ) t
)
SELECT 
    p.player_id,
    p.team_ranking,
    rp.new_price AS price_money
FROM your_table p
JOIN rank_prices rp ON p.team_ranking = rp.team_ranking
ORDER BY p.team_ranking DESC, p.player_id;

方法二:窗口函数嵌套实现组级LAG

如果每个team_ranking的price_money值完全一致,可直接用FIRST_VALUE获取组内价格,再对组级价格应用LAG:

SELECT 
    player_id,
    team_ranking,
    LAG(FIRST_VALUE(price_money) OVER (PARTITION BY team_ranking), 1, 0) 
        OVER (ORDER BY team_ranking DESC) AS price_money
FROM your_table
ORDER BY team_ranking DESC, player_id;

说明

  • 两种方法核心都是先按team_ranking分组处理价格,再将结果批量应用到该组所有行,而非逐行移动。
  • 方法一通用性更强,适用于所有场景;方法二代码更简洁,但依赖同一等级价格一致的前提(符合当前输入数据的特征)。

内容的提问来源于stack exchange,提问作者Zhenyu He

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:37:04