和除功能

时间:2011-02-17 18:56:45

标签: sql-server sql-server-2008

我在使用sum函数和除法时试图弄清楚哪种格式是正确的:

哪一个是正确的?

sum(filesize/1024)

sum(filesize)/1024

filesize列是以千字节为单位的度量,我将其转换为兆字节。

4 个答案:

答案 0 :(得分:7)

他们意味着不同的东西。 sum(filesize/1024)将文件大小减小到兆字节,然后总计兆字节。对于每个文件,这会“忘记”超过兆字节边界的大小,因此它会低估总文件大小。

sum(filesize)/1024将以兆字节为单位报告正确的大小 - 向下舍入。

答案 1 :(得分:1)

就个人而言,我会选择#2选项(假设数字不是那么大,你会遇到溢出问题)。通过这种方式,数字可以保持尽可能准确,直到它们被提供给用户。

答案 2 :(得分:0)

我很确定第一个是正确的 - sum(filesize / 1024),但是你要确保filesize永远不会为0,否则你的查询会出错。

在oracle上使用decode或在SQL服务器上使用解码。

答案 3 :(得分:0)

逻辑上,两者都应该给出相同的结果。但是, sum(filesize)/ 1024 可能会更快。如果你选择其他选项,则对每个结果执行除法运算,而不只是执行一次。