You need to enable JavaScript to run this app. Oracle SQL中GROUP BY搭配HAVING的AVG筛选查询问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中GROUP BY搭配HAVING的AVG筛选查询问题排查

错误原因说明

需求要求筛选平均保修时长超过3年的厂商,你现有语句的逻辑错误点如下:

  • 你使用WHERE WARRANTY_IN_YEARS>3先过滤了所有单条记录保修时长不超过3年的条目,再分组统计,相当于只统计了每个厂商里保修期超过3年的机型数量,不符合需求要求的「统计符合平均保修要求的厂商下所有机型总量」
  • 分组后的聚合条件筛选需要用HAVING子句,而非WHERE子句。

正确Oracle SQL实现

SELECT MANUFACTURER, COUNT(IME_NO) AS TOTAL_COUNT
FROM MOBILE_MASTER
GROUP BY MANUFACTURER
HAVING AVG(WARRANTY_IN_YEARS) > 3;

逻辑验证

  1. 先对全表所有记录按厂商分组
  2. 计算每个组的平均保修时长:Samsung平均为(4+3+3)/3≈3.33>3,符合要求;Nokia平均为(2+2+5)/3=3,不符合超过3年的要求
  3. 对符合要求的Samsung统计全部3条机型数量,最终输出和预期结果完全一致

内容的提问来源于stack exchange,提问作者Ft.Mohak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 00:15:05