SQL查询以获取分组总计的标准偏差

时间:2018-07-27 18:53:16

标签: sql sql-server grouping aggregate-functions

我一直试图找到一个SQL查询,该查询首先按员工分组并汇总总收入,如下所示:

**SELECT Employee_Name, 
         SUM(Total_Revenue)
    FROM TABLE table_Name
GROUP BY Employee_Name**

然后,我还希望查询然后找到聚合组数据的标准偏差。如下所示:

**SELECT Rep_Name, 
         STDEV(Total_Revenue)
    FROM  Sales
Group By Rep_Name**

到目前为止,所有尝试都没有奏效,我确实可以从经验丰富的SQL专家那里得到一些指导。我已经尝试了上述两个查询的无数组合,但没有任何结果。

我设法获得了每个员工总收入的个体标准差,并且我也设法获得了基于每次销售的总收入的标准差。

我本质上是想比较每个员工的总收入,并确定每个员工的总收入的标准差。

下面是我用excel公式生成的内容,它最终是我想要生成SQL输出的内容,以便我可以进行进一步的分析。

   ID   Total   Average   Standard Deviation 
    1   3100.00 1787.92   800.53
    2   3102.30 1787.92   800.53
    3   2363.04 1787.92   800.53
    4   2000.00 1787.92   800.53
    5   1749.87 1787.92   800.53
    6   1641.43 1787.92   800.53
    7   1387.77 1787.92   800.53
    8   1299.25 1787.92   800.53
    9   1283.61 1787.92   800.53
    10  1203.11 1787.92   800.53
    11  536.75  1787.92   800.53

热烈欢迎任何帮助。

祝一切顺利, :)

1 个答案:

答案 0 :(得分:1)

我认为您想要一个窗口函数:

SELECT Rep_Name,
       AVG(SUM(Total_Revenue)) OVER () as avg_rep, 
       STDEV(SUM(Total_Revenue)) OVER () as stdev_rep
FROM Sales
GROUP BY Rep_Name;

进行汇总,然后计算总和的标准差。