如何根据多个计数列出我桌子中的特定项目?
表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
但是例如'南非荷兰语'不应该被退回,因为它在两个国家(纳米比亚和南非)使用,但它只在一个国家中使用。
对于在多个国家/地区正式使用的每种语言,如何列出使用该语言的每个国家/地区的名称(表明该语言是否属于该国家/地区)?
答案 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