获取子查询中特定列的总平均值

问题描述 投票:0回答:0

子查询为我提供了每个代表每个月的总预付费激活,并且在这个子查询之外,我试图找到整个列的平均值,也是每个月的平均值。我如何为我正在寻找的内容正确编码?

有关更多详细信息,请参见下面的代码,但我希望它根据所有代表的不同 EOM 值对总预付 ACT 进行平均,以便我可以将单个代表的表现与给定月份的总平均值进行比较。

这是我当前的 SQL 代码和一些结果的片段:

SELECT
    *
    , AVG(PM.[Total Prepaid ACTs]) AS 'Average Prepaid'
FROM
    (
    SELECT
        WT.repid
        , ISNULL(SUM(NetPrePaidActivations), 0) AS 'Total Prepaid ACTs'
        , ISNULL(SUM(NetPostpaidIncBYOD), 0) AS 'Total Postpaid ACTs'
                , CAST(ROUND(ISNULL(SUM(AccessorySales), 0), 2) AS FLOAT) AS 'Total Acc Sales'
        , ISNULL(SUM(AccessoryUnits), 0) AS 'Total Acc Units'
        , EOMONTH(WT.ActivityDate, 0) AS 'EOM'
    FROM
        WalmartWSP.dbo.WalmartTransactions WT
    LEFT JOIN
        WalmartWSP.dbo.RepRoster RR
    ON
        WT.repid = RR.RepID
    WHERE
        WT.repid <> 0
        AND
        RR.RepHireDate BETWEEN '06-01-2022' AND '12-31-2022'
        AND
        WT.ActivityDate BETWEEN '06-01-2022' AND '12-31-2022'
    GROUP BY
        WT.repid
        , EOMONTH(WT.ActivityDate, 0)
    ) PM --ProductivityMetrics
GROUP BY
    PM.EOM
    , PM.repid
    , PM.[Total Acc Sales]
    , PM.[Total Acc Units]
    , PM.[Total Postpaid ACTs]
    , PM.[Total Prepaid ACTs]

当前结果(结果中还有几列我为了可见性而遗漏了):

repid   Total Prepaid ACTs    EOM           Average Prepaid
369928  5                     2022-10-31    5
373049  17                    2022-11-30    17
369579  0                     2022-10-31    0
361235  22                    2022-11-30    22
370359  6                     2022-11-30    6

不是计算每个 EOM 的每个“总预付 ACT”的平均值,而是给我左侧的总预付 ACT 值,并且只对这一行求平均值。

所以我想要的结果如下:

repid   Total Prepaid ACTs    EOM           Average Prepaid
369928  5                     2022-10-31    2.5
373049  17                    2022-11-30    15.0
369579  0                     2022-10-31    2.5
361235  22                    2022-11-30    15.0
370359  6                     2022-11-30    15.0
sql sql-server average
© www.soinside.com 2019 - 2024. All rights reserved.