如何在SQL World数据库中筛选出包含10个以上国家的大洲?
筛选包含10个以上国家的大洲(World数据库)
我在学习SQL时,用World数据库做练习,需求是找出包含10个以上国家的大洲。涉及的world表核心字段如下:
name:存储所有国家的名称continent:存储国家所属大洲,可选值包括非洲、美洲、亚太、欧洲、中东、北美、南美、南亚
一开始我写出了基础的分组统计代码,但没法完成筛选需求:
SELECT continent, COUNT(*) FROM world GROUP BY continent
后来补充了分组后的过滤条件,得到了正确结果,最终代码如下:
SELECT continent, COUNT(*) FROM world GROUP BY continent HAVING COUNT(name) > 10
关键说明
- 要对分组后的聚合结果做条件筛选,不能用
WHERE(WHERE用于分组前过滤单行数据),必须使用HAVING子句 - 用
COUNT(name)而非COUNT(*),是为了排除name字段为空的无效数据,确保统计的是真实存在的国家数量(如果name字段无NULL值,用COUNT(*)也能得到相同结果)
内容的提问来源于stack exchange,提问作者oljo
相关产品推荐
相关产品推荐

