2011-12-05 4 views
1

は、私はそのように求めることができます:結果のカウントがselected_he = yes2以上であることを記録した場合件数(a.selected_he = "yes")はOKですか?

having count(a.selected_he = "yes") > 2 

私がお願いしたいと思います。 しかし、私はカウント機能でa.selected_he = "yes"を書くことができるか分からない。

私は正しいですか? null秒、ないtrueの非

+1

あなたは自分で試してみませんか? 「私はこれをやってもいい?実際に自分で試してみると、通常はもっと早く答えることができます。 – Griffin

+0

代わりにsum()を試してください。比較のブール結果はint(0または1)にキャストされ、両方が "カウント"されます。しかし、あなたがsum()を使うと、真の値だけを加算します。 –

答えて

4
SELECT sum(CASE WHEN a.selected_he='yes' THEN 1 ELSE 0 END)>2 FROM ... 

countカウント。

+0

'sum'はそのトリックをしますか? –

+0

はい、そうです。もちろん、あなたは '' case(a.select_he = 'yes' then then else Null end) 'のようにカウントすることができます。なぜでしょうか? –

1
select id,count(*) as counts 
from table 
where selected_he = 'yes' 
group by id 
having counts > 2 

where句の列にNULLが含まれていない場合。

+0

OPは残っているものをフィルタリングしたいと思っています。しかし文脈はここではよく定義されていません。 –

関連する問題