当前位置: 首页 > news >正文

数据库技术中**分组查询**的核心内容,主要围绕 `GROUP BY` 和 `HAVING` 子句展开

📌 数据库分组查询核心知识点总结

数据库技术中分组查询的核心内容,主要围绕GROUP BYHAVING子句展开,以下是关键解读:


1. GROUP BY 子句
  • 作用:在WHERE子句之后,对元组按指定属性进行分组,将相同属性值的元组归为一组。
  • 规则SELECT子句中的聚集函数(如AVG()COUNT()SUM()等)仅在每个分组内生效,而非整个表。
  • 示例(学生平均成绩)
    SELECTSno,AVG(Grade)FROMSCGROUPBYSno;
    该语句按学号Sno分组,计算每个学生的平均成绩。

2. HAVING 子句
  • 作用:在GROUP BY之后,对分组结果进行过滤,只保留满足条件的分组(与WHERE过滤元组不同)。
  • 注意HAVING只能跟在GROUP BY之后,不能单独使用。
  • 示例(工程供应商数量筛选)
    SELECTJno,AVG(Qty)FROMSPJGROUPBYJnoHAVINGCOUNT(DISTINCT(Sno))>2ORDERBYJnoDESC;
    该语句按工程号Jno分组,筛选出至少由3家供应商供应零件的工程,并计算平均供应数量,最后按工程号降序排列。

3. 空值处理注意事项
  1. 聚集操作中空值被忽略
    • SUM()AVG()COUNT(列名)等操作,空值不参与计算;
    • COUNT(*)会统计所有元组(包括含空值的),但COUNT(列名)仅统计非空值的元组。
  2. 分组时空值视为普通值
    • 若分组属性包含空值,所有空值会被归为一组,参与分组后的聚集计算。

💡 核心区别对比

子句作用对象位置
WHERE基础表的元组FROM之后,GROUP BY之前
GROUP BY元组分组WHERE之后,HAVING之前
HAVING分组后的结果集GROUP BY之后

数据库分组查询核心知识点总结非常准确、结构清晰,涵盖了GROUP BYHAVING的语义、执行顺序、空值处理及关键对比。以下是对该内容的精炼补充与要点强化,便于理解与应用:

执行逻辑顺序(SQL 查询实际执行流程)
FROMWHERE(过滤原始行)→GROUP BY(分组)→HAVING(过滤分组)→SELECT(计算聚集函数与非分组列)→ORDER BY(排序)

⚠️重要限制

  • SELECT子句中所有非聚集函数的列,必须出现在GROUP BY子句中(否则语法错误,如 MySQL 5.7+ 严格模式、PostgreSQL、SQL Server 均强制要求;仅旧版 MySQL 允许“宽松模式”,但属非标准行为)。
    ✅ 正确:SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;
    ❌ 错误:SELECT Sno, Sname, AVG(Grade) FROM SC GROUP BY Sno;Sname未分组且未聚集,语义模糊)

HAVING vs WHERE 的本质区别

  • WHERE是「行级过滤」,条件中不能使用聚集函数(如WHERE AVG(Grade) > 80❌);
  • HAVING是「组级过滤」,条件中必须依赖聚集结果(如HAVING AVG(Grade) > 80✅)。

空值分组实操示例
Sno列存在 NULL,则GROUP BY Sno会将所有Sno IS NULL的记录归为单独一组,COUNT(*)在该组中统计 NULL 行数,AVG(Grade)仍忽略该组中Grade为 NULL 的项。

-- 查看空值是否被单独分组(可验证)SELECTSno,COUNT(*)AScnt,AVG(Grade)FROMSCGROUPBYSnoORDERBYSnoISNULLDESC,Sno;

http://www.jsqmd.com/news/526279/

相关文章:

  • 2026实力蜂窝板厂商排行榜行业精选推荐:蜂窝板公司/蜂窝板厂商/蜂窝板厂家/蜂窝板品牌/蜂窝板工厂/蜂窝板批发厂家/选择指南 - 优质品牌商家
  • Dify Multi-Agent协同不是拼积木!20年专家拆解“任务分解-角色协商-结果仲裁”三层协同范式(仅剩最后87份架构白皮书可领)
  • AR Foundation Samples深度集成:ARKit与ARCore跨平台开发终极指南
  • Kimi-VL-A3B-Thinking GPU算力适配指南:单卡A10部署2.8B MoE模型全流程
  • Python运算符优先级与位运算实战:代码更高效、更优雅
  • 2026年评价高的哈尔滨玄关柜定制品牌推荐:哈尔滨飘窗柜定制/哈尔滨展示柜定制高口碑品牌推荐 - 品牌宣传支持者
  • Chandra OCR企业应用:保险理赔材料OCR→JSON字段直连核保系统API接口开发
  • 别再为S7-200PLC地址分配头疼了!手把手教你用CPU224+扩展模块搞定完整IO配置
  • Tao-8k数据库智能助手实战:MySQL查询优化与自然语言交互
  • TSL1401线阵传感器嵌入式驱动与高精度时序控制实践
  • 5分钟搞定!CosyVoice2语音克隆镜像零基础部署教程
  • mPLUG视觉问答实战:电商运营、教育互动、内容审核的轻量级助手
  • AI 编程时代的规范驱动开发:OpenSpec 实践指南
  • fn.py 性能优化技巧:如何避免常见陷阱并提升代码执行速度
  • Multisim13.0仿真二极管平衡混频器:从波形失真到参数调整的完整避坑指南
  • SiameseAOE模型赋能内容创作平台:自动生成评论摘要与标签
  • 使用ShardingSphere进行分库分表
  • 2026年热门的直线轴承公司推荐:PBC静音自润滑直线轴承/LIN-11R铝塑滑动直线轴承精选公司 - 品牌宣传支持者
  • Qwen3-ASR-0.6B多场景实战:播客转文字、庭审记录、远程医疗语音归档
  • DeepSeek-OCR-2开发指南:C++集成与性能优化
  • 锅炉安装企业资质增项咨询优质机构推荐:ISO 5001认证、企业做认证、特种设备充装许可证、特种设备制造许可证选择指南 - 优质品牌商家
  • SiameseAOE中文-base快速上手:Colab免费GPU环境一键运行ABSA WebUI
  • 避开LIN干扰测试的坑:CANoe中Test moudle_LIN Disturbance Block的5个关键配置细节
  • 鲲鹏920芯片+Redis7.0实战:Docker-Compose避坑指南(附配置文件模板)
  • TrafficMonitor插件系统完整配置指南:打造个性化Windows监控中心
  • LangChain 重写:大模型 Agent 开发告别“拼凑学”,小白也能轻松上手收藏!
  • ClawdBot创新应用:为视障用户定制语音输入→文字翻译→TTS播报闭环方案
  • Qwen3-4B Instruct-2507应用场景:心理咨询师对话脚本生成+共情表达训练
  • 2026年免费AIGC降重网站合集:轻松去重无忧,目前口碑好的AIGC降重机构WritePass专注行业多年经验,口碑良好
  • Win11Debloat终极指南:如何让Windows系统运行速度提升50%