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

SSMS中按Style更新Groups表AvgXX字段的UPDATE语句实现问询

解决Groups表AvgXX字段的更新需求

没问题,我帮你写一个符合要求的UPDATE语句,同时拆解一下逻辑,确保你能理解每一步的作用:

UPDATE g
SET AvgXX = agg.AverageAmount
FROM Groups g
INNER JOIN (
    -- 先计算每个StyleKey对应的符合条件的平均Amount
    SELECT
        g_inner.StyleKey,
        AVG(o_distinct.Amount) AS AverageAmount
    FROM Groups g_inner
    -- 第一步:对Orders去重,确保同一天(DaysKey)的同Group下Amount只统计一次
    INNER JOIN (
        SELECT DISTINCT GroupKey, DaysKey, Amount
        FROM Orders
    ) o_distinct ON g_inner.Key = o_distinct.GroupKey
    -- 关联Days表,筛选出Day≥100的记录
    INNER JOIN Days d ON o_distinct.DaysKey = d.Key
    WHERE d.Day >= 100
    -- 按StyleKey分组,计算该分组下的平均Amount
    GROUP BY g_inner.StyleKey
) agg ON g.StyleKey = agg.StyleKey;

关键逻辑说明:

  • 去重处理:内层的SELECT DISTINCT GroupKey, DaysKey, Amount是核心,它保证了同一个DaysKey(同一天)、同一个GroupKey对应的Amount只会出现一次,完美满足“同一天的多条Amount记录仅统计一次”的要求。
  • 筛选条件:通过关联Days表,我们只保留Day≥100的订单记录,确保计算范围正确。
  • 分组计算:最后按StyleKey分组,计算该风格下所有符合条件的去重后Amount的平均值,再更新到Groups表的AvgXX字段。

如果需要处理没有符合条件记录的StyleKey(避免AvgXX被设为NULL),可以把SET AvgXX = agg.AverageAmount改成SET AvgXX = ISNULL(agg.AverageAmount, 0),这样会把无数据的情况设为0,你可以根据实际需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:28:01