我的计数()如何通过评估?

我的计数()如何通过评估?

问题描述:

我相当新的SQL,我试图创建一个查询,试图确定在哪个国家只说3种特定语言(西班牙语,意大利语,德语)说话,没有其他语言。我的计数()如何通过评估?

select country 
from langusage 
group by country 
having count(case when language in ('spanish','german','italian') then 1 else 5 end)=3 

输出是所有拥有至少一种上述语言的国家。他们如何通过'= 3'测试?

+0

什么是你期待'having'条款里面做的是count语句?计数将返回1或5次,次数为x。你正在计算它返回一个值的次数,但是case语句中的1和5是多少? – Charleh

原因是count(1) = count(5)count()计算非NULL值的数量。

您打算sum()

select country 
from langusage 
group by country 
having sum(case when iso in ('spanish', 'german', 'italian') then 1 else 5 end) = 3 
+0

有人可以向我解释案件陈述的用途吗?为什么是1或5? – Charleh

+0

@Charleh。 。 。 OP只是试图将三种语言加起来的值加起来为3,但没有别的。 –

+0

Gordon Linoff是正确的 –