2011-02-17 77 views
0

我想弄清楚哪个是正确的格式时使用除法和功能:总和功能与分区

哪一个是正确的?

sum(filesize/1024) 

sum(filesize)/1024 

的文件大小栏是其中我转换为兆字节的千字节的测量。

回答

7

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

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

+2

+1:打我吧。此外,仅在总和之后执行分割而不是在每个元素上都存在轻微的性能优势。 – StriplingWarrior 2011-02-17 19:02:33

0

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

在oracle上使用解码或者在SQL服务器上使用解码来做到这一点。

+0

当除数为零时,您只会得到一个错误,但在这里它是一个常数1024. – Andomar 2011-02-17 19:00:42

1

就我个人而言,我会选择#2(假设数量不是很大,你会遇到溢出问题)。这样数字保持尽可能精确,直到它们被赋予给用户。

0

从逻辑上讲,两者都应该给出相同的结果。但是,总和(文件大小)/ 1024可能会更快。如果您选择其他选项,则您将对每个结果执行除法操作,而不是仅执行一次。