You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL使用count()函数统计国家数量及对应城市数问题

MySQL统计不同国家总数的实现方案

核心实现(直接获取结果)

直接使用COUNT()搭配DISTINCT关键字即可完成去重计数,无需分组操作,SQL语句如下:

SELECT COUNT(DISTINCT CountryCode) AS distinct_country_total FROM world.city;
  • 逻辑说明:COUNT(DISTINCT 字段名)会先对该字段的所有非空值去重,再统计去重后的总条数,刚好匹配你统计唯一国家数量的需求,查询结果直接返回唯一国家的总个数。

补充:在原有分组查询中同步显示总国家数

如果你需要在之前「按国家统计城市数量」的查询结果里,同时带上全局唯一国家总数,可以使用窗口函数实现:

SELECT *, 
       COUNT(name) AS city_total,
       COUNT(DISTINCT CountryCode) OVER() AS distinct_country_total
FROM world.city
GROUP BY CountryCode;
  • 逻辑说明:OVER() 声明全局窗口范围,聚合函数会作用于所有分组后的结果,计算全局唯一的国家编码总数,每行结果都会携带这个总数值,取任意行的distinct_country_total字段值即可得到你需要的结果。

之前统计结果不符合预期的原因

你在原有GROUP BY分组语句中直接添加COUNT(CountryCode)时,聚合函数默认作用于每个分组内部,统计的是每个国家分组下的城市行数,最终所有分组的该字段求和才是全表城市总数,因此无法直接得到去重后的国家总数。


内容的提问来源于stack exchange,提问作者Alexandre Ramos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:48:04