按列+ COUNT(*)分组,如何获得每个组合的平均数?

Tim*_*ter 4 sql sql-server group-by sql-server-2005

我有以下(简化)查询:

SELECT     ResolvedBy, COUNT(*) AS Count, fiCategory, fiSubCategory, fiSymptom
FROM         tContact
WHERE     (ResolvedBy IS NOT NULL)
GROUP BY ResolvedBy, fiCategory, fiSubCategory, fiSymptom
ORDER BY Count DESC
Run Code Online (Sandbox Code Playgroud)

现在我需要fiCategory, fiSubCategory, fiSymptom列的每个组合的平均计数.怎么做?

例如:

ResolvedBy    Count    fiCategory    fiSubCategory    fiSymptom    Average
    1           50         1              2             3            40
    2           30         1              2             3            40
    3           40         1              2             3            40
    1           20         2              3             4            30
    2           40         2              3             4            30
Run Code Online (Sandbox Code Playgroud)

在这个例子中是fiCategory,fiSubCategory和fiSymptom的两种组合:1,2,32,3,4.因此,有两个平均值计算:

  1. 50 + 30 + 40/3 = 40
  2. 20 + 40/2 = 30.

所以我想总结每个组合的数量并除以出现次数.

编辑:该示例是提取查询的所需结果.计数是每个组合的所有出现的总和ResolvedBy.

先感谢您.

Tho*_*mas 8

Select ResolvedBy, [Count], fiCategory, fiSubCategory, fiSymptom
    , Avg(Z.Count) Over( Partition By fiCategory, fiSubCategory, fiSymptom ) As AvgByGrp
From    (
        Select ResolvedBy, Count(*) As [Count], fiCategory, fiSubCategory, fiSymptom
        From tContact 
        Group By ResolvedBy, fiCategory, fiSubCategory, fiSymptom
        ) As Z

Order By Z.Count Desc
Run Code Online (Sandbox Code Playgroud)