2017-05-31 57 views
-2

我想获得具有特定功能的行的百分比。对于我使用下面的查询:CASE在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 when将返回p.id或0.是0计数还是应该使用null或其他东西,以便当它没有该功能时不计算?

+1

只需尝试一下!要回答你的问题,0会计数,NULL不会。 – fancyPants

+0

在确定之前,我不会尝试它,因为它会运行几个小时,但感谢解释计数为0和空 –

+1

您不必运行此特定查询。一个简单的测试查询可以做。 – fancyPants

回答

1

它会计数。 0是一个有效值并将被计数。空值不会被计数。