按组划分的SQL平均百分比

时间:2020-07-13 19:44:50

标签: sql sql-server

我有一些样本记录的表1(将有100多个记录)

lastname    courtesy    
Lane          3  
Lane          4  
Lane          5  
Lane         12   
Santana       4  
Santana       5  

我的查询按姓氏获取平均百分比分组,但不按姓氏分组
您可以看到Lane和Santana仍然没有分组。
请更正查询。谢谢。


SELECT
  lastname,
  courtesy,
  percentage = AVG(courtesy) * 100 / SUM(AVG(courtesy)) OVER (PARTITION BY lastname)
FROM echo
GROUP BY
  lastname, courtesy

结果

lastname    courtesy    percentage
Lane         3           12
Lane         4           16
Lane         5           20
Lane         12          50
Santana      4           44
Santana      5           55

结果看起来像这样

lastname    percentage
Lane         16        (4/24)
Satana       22        (2/9)
count (lastname) / sum (courtesy)  group by lastname

1 个答案:

答案 0 :(得分:0)

我认为这是您想要的逻辑:

SELECT lastname,
       SUM(SUM(courtesy)) OVER (ORDER BY lastname),
       COUNT(*) * 1.0 / SUM(courtesy)
FROM echo
GROUP BY lastname;