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

基于两个运动员数据表的列合并、分组求平均与分组求最小值操作

没问题,我来帮你一步步完成这几个数据表操作!

第一步:合并两张运动员数据表

首先我们要把2016和2017年的运动员数据合并成一个完整的数据集,因为两张表的字段完全一致,用UNION ALL就能轻松实现:

SELECT Name, Position, 40_dash, Year, Overall
FROM 2016Athletes
UNION ALL
SELECT Name, Position, 40_dash, Year, Overall
FROM 2017Athletes

这里选择UNION ALL而非UNION,是因为它不会自动去重(两年的运动员基本不会有完全重复的记录),执行效率也更高;如果你的数据里存在重复项,可以换成UNION来自动去重。

第二步:按位置分组计算统计值

基于合并后的数据集,我们可以按Position分组,计算每个位置的平均40码冲刺时间和最快(最小)40码冲刺时间。注意要过滤掉40_dash为NULL的记录(比如示例里的Corey Davis),避免影响统计结果:

SELECT
    Position,
    ROUND(AVG(40_dash), 2) AS avg_40_dash,  -- 保留两位小数的平均值
    MIN(40_dash) AS min_40_dash             -- 最快冲刺时间
FROM (
    -- 先嵌套合并两张表的语句
    SELECT Name, Position, 40_dash, Year, Overall
    FROM 2016Athletes
    UNION ALL
    SELECT Name, Position, 40_dash, Year, Overall
    FROM 2017Athletes
) AS CombinedAthletes
WHERE 40_dash IS NOT NULL  -- 排除无冲刺数据的记录
GROUP BY Position
ORDER BY avg_40_dash;  -- 可选:按平均时间排序,直观对比位置间的速度差异

如果后续需要反复使用合并后的数据集,也可以先创建一个视图方便调用:

-- 创建合并视图
CREATE VIEW CombinedAthletes AS
SELECT Name, Position, 40_dash, Year, Overall
FROM 2016Athletes
UNION ALL
SELECT Name, Position, 40_dash, Year, Overall
FROM 2017Athletes;

-- 直接用视图统计
SELECT
    Position,
    ROUND(AVG(40_dash), 2) AS avg_40_dash,
    MIN(40_dash) AS min_40_dash
FROM CombinedAthletes
WHERE 40_dash IS NOT NULL
GROUP BY Position;

比如从你的示例数据来看,CB位置的最快冲刺时间会是Jalen Ramsey的4.41,RB组的平均时间则是(4.47+4.51)/2=4.49左右,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:15:08