当表中的每个列值除以总表行数时会发生什么。什么功能基本上由sql server执行?任何人都可以帮忙吗?
更具体地说:sum(column value ) / row count
和column 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
对两个选择执行的操作是什么?
答案 0 :(得分:0)
在你的例子中,两者都将是相同的值,因为count(officeid)
总是等于1,因为officeid包含在WHERE子句中,officetotal也包含在GROUP BY子句中。因此,该示例将不起作用,因为不会应用分组。
从GROUP BY中删除officetotal
时,您会收到以下消息:
专栏' officetotal'在选择列表中无效,因为它不是 包含在聚合函数或GROUP BY子句中。
这意味着你不能在一个选择中使用officetotal
和SUM(officetotal)
- 因为SUM意味着对一组值起作用,并且SUM只有一个值是没有意义的。
使用GROUP BY在SQL中以这种方式编写它是不可能的。如果您要查找某个组中的第一个或最后一个值,则必须使用MIN(officetotal)
或MAX(officetotal)
或其他方法。