列值除以SQL Server中的行数

时间:2015-06-09 07:47:18

标签: sql sql-server-2008

当表中的每个列值除以总表行数时会发生什么。什么功能基本上由sql server执行?任何人都可以帮忙吗?

更具体地说:sum(column value ) / row countcolumn value/ row count之间有什么区别。例如,

select cast(officetotal as float) /count(officeid) as value, 
sum(officetotal)/ count(officeid) as average from check1 
where officeid ='50009' group by officeid,officetotal

对两个选择执行的操作是什么?

1 个答案:

答案 0 :(得分:0)

在你的例子中,两者都将是相同的值,因为count(officeid)总是等于1,因为officeid包含在WHERE子句中,officetotal也包含在GROUP BY子句中。因此,该示例将不起作用,因为不会应用分组。

从GROUP BY中删除officetotal时,您会收到以下消息:

  

专栏' officetotal'在选择列表中无效,因为它不是   包含在聚合函数或GROUP BY子句中。

这意味着你不能在一个选择中使用officetotalSUM(officetotal) - 因为SUM意味着对一组值起作用,并且SUM只有一个值是没有意义的。

使用GROUP BY在SQL中以这种方式编写它是不可能的。如果您要查找某个组中的第一个或最后一个值,则必须使用MIN(officetotal)MAX(officetotal)或其他方法。