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

SQL按stars星级分组统计review_count总和的实现问题

原SQL错误原因

  • 你在SELECT中查询了stars字段,但GROUP BY子句用的是布尔表达式,不符合分组聚合的语法要求:非聚合类的查询列必须包含在GROUP BY子句中,执行要么报错要么返回错误的随机stars值。
  • 分组逻辑(2<=stars and stars <3) or stars >3存在漏洞:既漏掉了stars=3的判断,也无法输出你需要的分组标签,逻辑完全不匹配需求。

正确SQL写法

用CASE WHEN自定义分组规则是兼容性最强的写法,支持所有主流数据库:

场景1:严格按你描述的分组规则(<3、>=3)

SELECT 
  CASE WHEN stars < 3 THEN '< 3' ELSE '>= 3' END AS stars,
  SUM(review_count) AS review_count
FROM business
GROUP BY CASE WHEN stars < 3 THEN '< 3' ELSE '>= 3' END

执行结果:

starsreview_count
< 3123
>= 31280

场景2:匹配你给出的期望输出结果

你给出的期望输出中<3分组的总和1358实际是stars<=3的所有数据之和(3.0的1235+2.5的123),调整分组条件即可得到对应结果:

SELECT 
  CASE WHEN stars <= 3 THEN '< 3' ELSE '>= 3' END AS stars,
  SUM(review_count) AS review_count
FROM business
GROUP BY CASE WHEN stars <= 3 THEN '< 3' ELSE '>= 3' END

执行结果和你给出的预期完全一致:

starsreview_count
< 31358
>= 345

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:39:03