MySQL选择基于多个计数

时间:2016-05-18 18:06:46

标签: mysql

如何根据多个计数列出我桌子中的特定项目?

表countrylanguage表的格式为

CountryCode,       Language,    IsOfficial,    Percentage**
ABW                Dutch        T              5.3
AFG                Balochi      F              0.9
AFG                Dari         T              32.1

到目前为止,我已经提出了这个代码,但这并没有给我正确的输出

select countrycode,  Language, IsOfficial, count(*)

from 

 countrylanguage

 group by countrycode

,示例输出如下:

示例输出

示例:“Aimara”是玻利维亚和秘鲁的官方语言,它也在智利使用,但不是官方语言。所以查询应该返回记录:

Aimara Bolivia T
Aimara Chile   F
Aimara Peru    T

但是例如'南非荷兰语'不应该被退回,因为它在两个国家(纳米比亚和南非)使用,但它只在一个国家中使用。

对于在多个国家/地区正式使用的每种语言,如何列出使用该语言的每个国家/地区的名称(表明该语言是否属于该国家/地区)?

2 个答案:

答案 0 :(得分:1)

您可以在子句中使用with和in子句

select countrycode,  Language, IsOfficial
   where language in  
    (select  Language
    from countrylanguage
    where IsOfficial = 'T'
    having count(*)>1
    group Language ) 

order by language;

答案 1 :(得分:0)

使用correlated subquery,您可以将语言过滤为仅符合您作为2个或更多国家/地区主要语言标准的语言列表。

SELECT Language, CountryCode, isOfficial
FROM countrylanguage
WHERE Language IN (
    SELECT Language
    FROM countrylanguage
    WHERE isOfficial = "T"
    GROUP BY Language
    HAVING COUNT(*) > 1)
ORDER BY Language