2011-12-05 35 views
1

我能问这样的:count(a.selected_he =“yes”)是否可以?

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

我想问如果结果的计数记录了selected_he = yes超过2。 但我不确定我可以在计数功能中写入a.selected_he = "yes"

我对不对?

+1

你为什么不试试自己?诸如“我能做这个还是那个?”的问题如果你真的自己尝试,通常可以得到更快的回答。 – Griffin

+0

尝试用sum()代替。比较的布尔结果将被转换为一个int(0或1),两者都将被“计数”。但是,如果你总结(),那么你只会加上“真”值。 –

回答

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

count计数非null S,不true秒。

+0

'总和'会做的伎俩呢? –

+0

是的,会的。当然你可以“计数(当a.select_he ='yes',然后1 else null结束时)',但你为什么要:) –

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

如果where子句中的列不包含空值。

+0

假设OP想要过滤掉其余部分,听起来像是一个不错的选择。但是在这里没有很好的定义。 –