state(code, name, country, population)
statelanguage(statecode, statelanguage, isofficial, percentage)
在表状态中,代码指的是状态的代码,其余的属性是微不足道的。在表statelanguage中,statecode指的是特定状态的代码,statelanguage是在这种状态下说的语言,isofficial是关于这种语言是否是官方语言的布尔值,百分比是说国家语言的人的百分比。
我要做的是编写一个SQL语句来选择使用至少两种不同语言的状态代码。
我的想法是首先获取仅使用1种语言的状态的状态代码,然后从原始表中减去该状态,并仅投影状态代码。但我正在努力如何做到这一点。感谢
答案 0 :(得分:1)
select *
from state
where ( select count(distinct statelanguage)
from statelanguage
where statecode = state.code ) >= 2
答案 1 :(得分:1)
使用聚合函数计算每个州的语言:
select statecode, count(distinct statelanguage)
from statelanguage
group by statecode
现在使用HAVING
select statecode, count(distinct statelanguage)
from statelanguage
group by statecode
having count(distinct statelanguage) >=2