数字が10から10までの数字のmysqlデータベースフィールドがあります。AVGを使用すると「0」のエントリが除外されます
私はこれの平均を見つけたいが、その数= 0 すべてのエントリを除くしかし、私もそこにあるどのように多くのエントリがカウントしたいと思います - 数= 0
のものを含みますだから私はちょうど数字を追加することはできません!= 0、それは私のカウントに間違った結果を与えるだろう。
だから私は何かが必要です。
AVG(if(numbers!=0)) AS average
数字が10から10までの数字のmysqlデータベースフィールドがあります。AVGを使用すると「0」のエントリが除外されます
私はこれの平均を見つけたいが、その数= 0 すべてのエントリを除くしかし、私もそこにあるどのように多くのエントリがカウントしたいと思います - 数= 0
のものを含みますだから私はちょうど数字を追加することはできません!= 0、それは私のカウントに間違った結果を与えるだろう。
だから私は何かが必要です。
AVG(if(numbers!=0)) AS average
これはいかがですか?
select avg(nullif(field, 0)) from table;
あなたは、一般的にゼロ値を除外したくない大きなクエリの一部としてこれを使用したい場合には、この方法は、where
句を使用することを強制しませんどのように注意してください。また
は、方法によって、avg
上記の例では、我々はnull
値に0
値をオンにするnullif
を使用して、null
値をスキップします。 null
の値を使用して平均値(たとえば、0
が正当な値である場合)を考慮しない値を表す場合は、avg(field)
を使用してください。
SELECT avg(case
when numbers = 0 then null
else numbers
end) as average,
count(*)
FROM your_table
avg()にNULL値が使用されていないため、これを行う必要があります。
2つの選択肢が必要です。 – Rufinus