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

如何使用COUNT函数统计多条件数据?SQL语句修正求助

修正后的SQL语句及说明

你的原SQL存在两个核心问题:

  1. 用CASE包裹聚合函数COUNT(*),导致整个查询只能返回单一聚合值,无法拆分出三个类别的统计结果;
  2. CASE分支未覆盖Medium类别的判断逻辑,且列名定义错误。

正确的SQL实现(条件聚合)

使用条件聚合可分别统计每个类别下的城市数量,具体语句如下:

SELECT
    COUNT(CASE WHEN Population < 1000000 AND Area < 500 THEN 1 END) AS Small,
    COUNT(CASE WHEN Population > 1000000 AND Population < 2000000 AND Area > 500 AND Area < 700 THEN 1 END) AS Medium,
    COUNT(CASE WHEN Population > 2000000 AND Area > 700 THEN 1 END) AS Big
FROM city;

也可以用SUM实现(逻辑等价):

SELECT
    SUM(CASE WHEN Population < 1000000 AND Area < 500 THEN 1 ELSE 0 END) AS Small,
    SUM(CASE WHEN Population BETWEEN 1000001 AND 1999999 AND Area BETWEEN 501 AND 699 THEN 1 ELSE 0 END) AS Medium,
    SUM(CASE WHEN Population > 2000000 AND Area > 700 THEN 1 ELSE 0 END) AS Big
FROM city;

逻辑说明

  • 对每一行数据,CASE语句判断是否符合对应类别条件:符合则返回1(COUNT统计非NULL值,SUM累加数值),不符合则返回NULL(COUNT忽略,SUM加0);
  • 三个独立的聚合函数分别计算Small、Medium、Big三类的城市数量,最终返回一行三列的结果,与预期输出一致。

数据验证

基于你提供的city表:

CityPopulationArea
A2500000800
B990000400
C1200000600

执行上述SQL后会得到预期结果:

SmallMediumBig
111

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:52:36