110

SELECT 句で除算を実行したいと考えています。いくつかのテーブルを結合して集計関数を使用すると、多くの場合、仕切りとして null またはゼロの値が使用されます。今のところ、ゼロ値とヌル値による除算を回避するこの方法しか思いつきません。

(CASE(COALESCE(COUNT(column_name),1)) WHEN 0 THEN 1
ELSE (COALESCE(COUNT(column_name),1)) END) 

これを行うより良い方法があるのだろうか?

4

5 に答える 5

279

たとえば、 NULLIF関数を使用できます

something/NULLIF(column_name,0)

の値column_nameが 0 の場合 - 式全体の結果は NULL になります

于 2013-07-16T15:59:56.630 に答える
50

これは古い質問だと思いますが、別の解決策は最大の機能を利用することです。

greatest( count(column_name), 1 )  -- NULL and 0 are valid argument values

注: 私の好みは、Erwin と Yuriy の回答のように NULL を返すか0、除算前に値を検出して を返すことでこれを論理的に解決すること0です。そうしないと、 を使用してデータが誤って表示される可能性があります1

于 2014-10-23T17:19:03.307 に答える