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

基于组统计筛选球队数据并删除偶数行的SQL查询实现需求

球队球员数据统计SQL实现方案

前置样例表

  • Teams表(存储球队基础信息)
Team IDTeam Name
1Bears
2Tigers
3Lions
4Sharks
  • Players表(存储球员基础信息与上场时长)
Player IDNameTeam IDPlaytime
1John15
2Adam14
3Smith15
4Michelle25
5Stephanie210
6David210
7Courtney22
8Frank27
9Teresa21
10Michael33
11May41
12Daniel41
13Lisa44

查询要求

  • 第一步:筛选出队员总数量少于4人的所有球队
  • 第二步:统计符合条件球队的球员总人数、总上场时长,按总上场时长降序排列,生成包含Team Name、Num Players、Total Playtime三个字段的中间表
  • 第三步:剔除中间表的所有偶数行,得到最终结果

实现代码(支持窗口函数的主流数据库通用,如MySQL 8.0+、PostgreSQL、SQL Server等)

WITH intermediate_table AS (
    SELECT 
        t.`Team Name`,
        COUNT(p.`Player ID`) AS `Num Players`,
        SUM(p.Playtime) AS `Total Playtime`
    FROM Teams t
    LEFT JOIN Players p ON t.`Team ID` = p.`Team ID`
    GROUP BY t.`Team ID`, t.`Team Name`
    HAVING COUNT(p.`Player ID`) < 4
    ORDER BY `Total Playtime` DESC
)
SELECT `Team Name`, `Num Players`, `Total Playtime`
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (ORDER BY `Total Playtime` DESC) AS row_num
    FROM intermediate_table
) t
WHERE row_num % 2 = 1;

代码逻辑说明

  1. CTE部分先关联球队和球员表,按球队维度分组,通过HAVING子句筛选出球员数小于4的球队,同时统计每个符合条件球队的球员总数和总上场时长,按总时长降序生成中间表
  2. 外层查询通过ROW_NUMBER()窗口函数给中间表的每行分配连续行号,最后筛选行号为奇数的行,即完成剔除偶数行的要求

执行结果

Team NameNum PlayersTotal Playtime
Bears314
Lions13

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:09:03