2017-05-31 7 views
-2

特定の機能を持つ行のパーセンテージを取得したい。そのために私は次のクエリを使用します。このクエリは、簡略化されてケースCOUNTの内部で0が返されるとカウントされますか?

select 
count(distinct case when a.has_feature="Y" then p.id else 0 end)*100/count(distinct p.id) 
FROM products p 
JOIN a on a.id=p.id 
WHERE 1 

を、しかし目標は一つだけのクエリでは、この割合を取得することです、と私はまた、製品を必要とするようa.has_feature="Y"上のテストがWHERE句にすることはできませんこの機能を持たない

私の質問は最初の件数です。 case whenp.idまたは0を返します。0はカウントされますか、またはnullなどを使用する必要があります。そうでないと機能がカウントされません。

+1

ただ試してみてください!あなたの質問に答えるために、0はカウントし、NULLはカウントしません。 – fancyPants

+0

数時間後に実行されるので、確かめる前に試してみませんが、0のカウントとnullを説明してくれてありがとうございます。 –

+1

この特定のクエリを実行する必要はありません。簡単なテストクエリはどちらかを行います。 – fancyPants

答えて

1

数えます。 0は有効な値であり、カウントされます。 Nullはカウントされません。

関連する問題