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

如何结合多SQL查询计算场地相对用户平均距离的表现值?

计算场地相对用户平均距离的表现

核心思路

把用户个人最近5次平均距离的计算结果和原始数据关联,先算出每个用户在对应场地的实际距离与个人平均的差值,再按场地、日期分组求这些差值的平均值,就能得到场地的相对表现。

基础版本SQL查询

SELECT 
    d.venue,
    d.date,
    AVG(d.distance - ua.avg_distance) AS Performance
FROM 
    "database" d
JOIN (
    -- 计算每个用户最近5次的平均距离
    SELECT 
        name, 
        AVG(distance) AS avg_distance
    FROM (
        SELECT 
            *,
            ROW_NUMBER() OVER (PARTITION BY name ORDER BY date DESC) AS seqnum
        FROM "database"
    ) s
    WHERE seqnum <= 5
    GROUP BY name
) ua ON d.name = ua.name
GROUP BY d.venue, d.date;

匹配示例逻辑的调整版本

如果需要像示例中那样,计算用户排除当前场地记录外的最近5次平均距离(比如Paul的平均不含Lakeview的数据),可以修改子查询,用窗口函数计算每条记录对应的用户历史平均(不含当前记录):

SELECT 
    venue,
    date,
    AVG(distance - user_avg) AS Performance
FROM (
    SELECT 
        *,
        -- 取当前记录之前的最近5条记录计算平均
        AVG(distance) OVER (
            PARTITION BY name 
            ORDER BY date DESC 
            ROWS BETWEEN 1 FOLLOWING AND 5 FOLLOWING
        ) AS user_avg
    FROM "database"
) sub
WHERE user_avg IS NOT NULL -- 排除无历史记录的用户(如示例中的Tom)
GROUP BY venue, date;

这个版本会忽略Tom的记录(他没有历史数据),最终Lakeview的结果为(100-100 + 140-160)/2 = -10,和示例预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 23:58:22