2017-05-31 58 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是一個有效值並將被計數。空值不會被計數。