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

SQL技术实现:从最新日期倒推查询球队当前比赛Streak

从最新日期倒推计算当前球队主场战绩 Streak

针对你需要从最新比赛日期倒推计算当前球队主场连续战绩的需求,我来给你具体的实现思路和SQL代码:

核心思路

  1. 先对每个主队的比赛记录按日期降序排序,让最新的比赛排在最前面;
  2. 给每条记录标记“是否和上一场(更早的一场)结果相同”,一旦出现不同结果就划分一个新分组;
  3. 统计每个分组的连续场次,取最新的那个分组的场次,再结合比赛结果生成对应的Streak标识(比如胜场用W+场次,平场用D+场次,负场用L+场次)。

SQL 实现代码

假设你的表名为 matches,可以用窗口函数来实现这个逻辑:

WITH ranked_matches AS (
    SELECT 
        HomeTeam,
        FTR,
        Date,
        -- 标记结果变化的分界点:当前结果和上一场(更早的)不同则为1,否则0
        SUM(CASE WHEN FTR = LAG(FTR) OVER (PARTITION BY HomeTeam ORDER BY Date DESC) THEN 0 ELSE 1 END) 
            OVER (PARTITION BY HomeTeam ORDER BY Date DESC) AS streak_group
    FROM matches
),
streak_counts AS (
    SELECT 
        HomeTeam,
        FTR,
        COUNT(*) AS streak_length,
        -- 取最新的分组(分组值最小的,因为从最新开始计数)
        ROW_NUMBER() OVER (PARTITION BY HomeTeam ORDER BY streak_group) AS rn
    FROM ranked_matches
    GROUP BY HomeTeam, FTR, streak_group
)
SELECT 
    HomeTeam,
    -- 根据FTR生成对应的Streak标识:H=胜(W),A=负(L),D=平(D)
    CONCAT(
        CASE FTR 
            WHEN 'H' THEN 'W'
            WHEN 'A' THEN 'L'
            WHEN 'D' THEN 'D'
        END,
        streak_length
    ) AS Streak
FROM streak_counts
WHERE rn = 1;

验证你的示例数据

把你提供的Team A数据代入:

Date | HomeTeam | AwayTeam | FTR
2017-08-14 | Team A | Team B | A
2017-08-24 | Team A | Team C | H
2017-08-28 | Team A | Team D | D
2017-09-11 | Team A | Team B | H
2017-09-25 | Team A | Team D | H

按日期降序排列后,顺序为:2017-09-25(H)、2017-09-11(H)、2017-08-28(D)、2017-08-24(H)、2017-08-14(A)

标记streak_group时:

  • 第一条(2017-09-25)没有上一条记录,streak_group=1;
  • 第二条(2017-09-11)和上一条结果都是H,streak_group保持1;
  • 第三条(2017-08-28)结果为D,和上一条H不同,streak_group=2;
  • 后续记录以此类推。

分组统计后,最新的分组(rn=1)是FTR=H、场次2,最终输出Team A | W2,和你的预期结果完全一致。

补充说明

  • 如果球队最新一场是平局,会输出D1;连平3场则输出D3;
  • 主队输球(FTR=A)的情况会输出L+场次,比如连输2场就是L2;
  • 这个方案支持同时计算多支主队的当前Streak,无需单独筛选某一支球队。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:32:04