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

在CASE语句中使用COUNT条件分类变量:SQL分组统计问题求助

解决按ID分组标记状态的SQL问题

嘿,你的思路完全在线!但初始代码的CASE WHEN语法写错啦——咱们得把语法捋顺才能正常运行。

问题出在哪?

你写的CASE WHEN COUNT(DISTINCT Yes_or_No)>1 AS 'Maybe'有两个小问题:

  • 缺少THEN关键字:CASE WHEN后面的条件满足时,得用THEN指定返回的值
  • AS的位置不对:列别名应该放在整个CASE语句的末尾,用END闭合后再命名

正确的SQL写法

下面是适配你需求的代码,替换成你的表名就能直接用:

SELECT 
    ID,
    CASE 
        WHEN COUNT(DISTINCT Yes_or_No) > 1 THEN 'Maybe'
        ELSE MAX(Yes_or_No) -- 当ID只有一种状态时,直接返回该状态
    END AS Status
FROM 
    your_table_name -- 这里换成你的实际表名
GROUP BY 
    ID;

代码说明

  • GROUP BY ID:按ID分组,确保每个ID只返回一行结果
  • COUNT(DISTINCT Yes_or_No) > 1:判断当前ID是否同时包含Yes和No两种值
  • THEN 'Maybe':满足条件时,标记为Maybe
  • ELSE MAX(Yes_or_No):当ID只有一种状态时,用MAX()(或MIN()、ANY_VALUE())取出该状态值,比如ID2只有Yes,就返回Yes

示例数据的运行结果

用你给出的测试数据跑上面的代码,会得到这样的结果:

IDStatus
1Maybe
2Yes
3Yes
4Maybe
5Yes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:02:39