选择Atleast Two

时间:2015-10-04 03:54:18

标签: sql

state(code, name, country, population) statelanguage(statecode, statelanguage, isofficial, percentage) 在表状态中,代码指的是状态的代码,其余的属性是微不足道的。在表statelanguage中,statecode指的是特定状态的代码,statelanguage是在这种状态下说的语言,isofficial是关于这种语言是否是官方语言的布尔值,百分比是说国家语言的人的百分比。

我要做的是编写一个SQL语句来选择使用至少两种不同语言的状态代码。

我的想法是首先获取仅使用1种语言的状态的状态代码,然后从原始表中减去该状态,并仅投影状态代码。但我正在努力如何做到这一点。感谢

2 个答案:

答案 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