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

MariaDB/MySQL:查询每个puuid的win=1最大连续行数

解决方案

假设你的表名为game_records,包含puuid、game_creation、win字段,可以用窗口函数实现需求,具体SQL语句如下:

WITH ranked_games AS (
    -- 按puuid分组,game_creation降序排序,给所有行编号
    SELECT 
        puuid,
        win,
        ROW_NUMBER() OVER (PARTITION BY puuid ORDER BY game_creation DESC) AS rn
    FROM game_records
),
win_streaks AS (
    -- 筛选win=1的记录,计算连续分组的标识
    SELECT 
        puuid,
        rn - ROW_NUMBER() OVER (PARTITION BY puuid, win ORDER BY rn) AS streak_group
    FROM ranked_games
    WHERE win = 1
),
streak_counts AS (
    -- 统计每个连续组的行数
    SELECT 
        puuid,
        COUNT(*) AS streak_length
    FROM win_streaks
    GROUP BY puuid, streak_group
)
-- 取每个puuid的最大连续行数
SELECT 
    puuid,
    MAX(streak_length) AS max_win_streak
FROM streak_counts
GROUP BY puuid;

逻辑说明

  • ranked_games:先按玩家(puuid)分组,将每个玩家的对局按game_creation倒序排号,确保最新的对局排在前面。
  • win_streaks:只保留胜利(win=1)的对局,通过rn减去同玩家同胜利状态下的排号,得到连续胜利的分组标识——连续的胜利对局这个差值会保持一致,非连续的则会变化。
  • streak_counts:统计每个连续胜利组的对局数量。
  • 最后一步汇总每个玩家的最大连续胜利数。

如果你的表名或字段名和假设不一致,直接替换对应名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:33:22