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

按日期分组,基于枚举类型位置列获取各位置最高得分及球员姓名

按日期分组获取各位置最高得分及对应球员的解决方案

我来帮你搞定这个统计需求!针对带有sector枚举列(取值为Midfielder/Forward/Defender/Goalkeeper)的数据集,我们可以用SQL的窗口函数+条件聚合来实现按日期分组,输出每个位置的最高得分和对应球员,缺失数据的位置自动填充null(如果需要填充0,也可以轻松调整)。

假设数据集结构

先假设你的表名为player_scores,包含以下字段:

  • date:比赛日期(日期类型)
  • player_name:球员姓名(字符串类型)
  • sector:球员位置(枚举类型,取值为指定的四个位置)
  • score:球员得分(数值类型)

实现步骤与代码

第一步:给每个日期+位置的记录按得分排名

先用窗口函数ROW_NUMBER()给每个日期下的每个位置的记录按得分降序排名,这样每个组里排名第1的就是该日期该位置得分最高的球员(如果有同分情况,ROW_NUMBER()会随机选一个;要是想保留所有同分球员,可以换成RANK(),后续用字符串拼接名字)。

WITH ranked_scores AS (
    SELECT
        date,
        player_name,
        sector,
        score,
        -- 按日期+位置分组,得分降序排名
        ROW_NUMBER() OVER (PARTITION BY date, sector ORDER BY score DESC) AS rank_num
    FROM player_scores
)

第二步:条件聚合转成目标格式

接下来用条件聚合把各个位置的得分和球员转成单独的列,按日期分组后输出,缺失的位置会自动填充null:

SELECT
    date,
    -- 中场位置的最高得分和对应球员
    MAX(CASE WHEN sector = 'Midfielder' THEN score ELSE NULL END) AS mid_score,
    MAX(CASE WHEN sector = 'Midfielder' AND rank_num = 1 THEN player_name ELSE NULL END) AS midfielder,
    -- 前锋位置的最高得分和对应球员
    MAX(CASE WHEN sector = 'Forward' THEN score ELSE NULL END) AS forward_score,
    MAX(CASE WHEN sector = 'Forward' AND rank_num = 1 THEN player_name ELSE NULL END) AS forward,
    -- 后卫位置的最高得分和对应球员
    MAX(CASE WHEN sector = 'Defender' THEN score ELSE NULL END) AS def_score,
    MAX(CASE WHEN sector = 'Defender' AND rank_num = 1 THEN player_name ELSE NULL END) AS defender,
    -- 门将位置的最高得分和对应球员
    MAX(CASE WHEN sector = 'Goalkeeper' THEN score ELSE NULL END) AS gk_score,
    MAX(CASE WHEN sector = 'Goalkeeper' AND rank_num = 1 THEN player_name ELSE NULL END) AS goalkeeper
FROM ranked_scores
WHERE rank_num = 1 -- 只保留每个组里得分最高的记录
GROUP BY date
ORDER BY date; -- 按日期排序输出

调整说明

  • 如果需要把缺失的得分填充为0,只需要把ELSE NULL改成ELSE 0即可(球员名字只能填充null,毕竟不能用数字代表姓名)。
  • 如果遇到同分球员需要全部展示,把ROW_NUMBER()换成RANK(),然后把MAX(player_name)改成STRING_AGG(player_name, ', ')(PostgreSQL/MySQL 8+支持,不同数据库语法略有差异),这样就能把同分球员的名字用逗号拼接起来。

模拟输出结果

datemid_scoremidfielderforward_scoreforwarddef_scoredefendergk_scoregoalkeeper
2017-12-2691Dele Alli85Harry Kane74Jan Vertonghen78Hugo Lloris
2017-12-2761Eric Diernullnull68Maya Yoshida65Michel Vorm
2017-12-28nullnull79Son Heung-minnullnull72Paulo Gazzaniga

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:57:15