Sql 我的count()如何通过评估?

Sql 我的count()如何通过评估?,sql,Sql,我对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”测试 原因是计数(1)=计数(5)coun

我对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”测试

原因是
计数(1)
=
计数(5)
count()
统计非空值的数量

您打算
sum()


您希望
子句中的count语句执行什么操作?计数将返回1或5,x次。您正在计算它返回值的次数,但是case语句中的1和5是用来做什么的?有人能给我解释一下case语句是用来做什么的吗?为什么是1还是5?@Charleh。OP只是尝试输入三种语言加起来等于3的值,但没有其他方法。你能解释一下计数(1)=计数(5)吗?至于你的答案,所以(…)中的iso实际上没有实现任何目标,它从来没有被评估过?那么为什么不使用0?@Charleh。因为那时可能会包括另一种语言<代码>“日语”
可能是第四种语言,OP不希望这样。
select country
from langusage
group by country
having sum(case when iso in ('spanish', 'german', 'italian') then 1 else 5 end) = 3