2011-02-17 8 views
0

除算で合計関数を使用するときに正しい形式がわかります:除算による除算

どちらが正しいですか?

sum(filesize/1024) 

又は

sum(filesize)/1024 

ファイルサイズ欄私はメガバイトに変換いキロバイト単位での測定です。

答えて

7

これは意味が異なります。 sum(filesize/1024)は、ファイルサイズをメガバイトに減らしてから、メガバイトを合計します。各ファイルについて、これはメガバイトの境界を超えてサイズを「忘れる」ので、合計ファイルサイズを報告しません。

sum(filesize)/1024は、正しいサイズをメガバイト単位で報告します(切り捨て)。

+2

+1:私にそれを打つ。また、すべての要素ではなく、合計の後に1回だけ除算を実行するのはわずかなパフォーマンス上の利点があります。 – StriplingWarrior

0

私は最初のものが正しい(ファイルサイズ/ 1024)ことを確信していますが、ファイルサイズが決して0でないか、またはクエリがエラーになることを確認する必要があります。

oracleでdecodeを使用するか、SQLサーバーでifを使用してください。

+0

除数がゼロの場合にのみエラーが発生しますが、ここでは定数1024です。 – Andomar

+0

0はなぜエラーを起こすのですか? 0で割ることは不可能ですが、0を除算するのは簡単です;-) –

+0

0/1024はなぜエラーになりますか? – StriplingWarrior

1

個人的には、オプション#2(数字がそれほど大きくないと仮定すると、処理するためにオーバーフローの問題が発生する)があります。このようにして、数字はユーザに与えられるまで、できるだけ正確にとどまります。

0

論理的には、どちらも同じ結果が得られるはずです。ただし、合計(ファイルサイズ)/ 1024はおそらく高速です。他のオプションを使用すると、各結果を1回だけではなく分割して処理します。