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

MySQL中的GROUP BY、DISTINCT和HAVING说明

1. GROUP BY(分组)

  • GROUP BY用于将查询结果按照指定的列进行分组
  • 通常与聚合函数(如COUNT、SUM、AVG等)一起使用
  • 每个分组返回一行结果

示例:

SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;

2. DISTINCT(去重)

  • DISTINCT用于去除结果集中的重复行
  • 可以作用于单列或多列
  • 在结果返回之前进行去重

示例:

SELECT DISTINCT department 
FROM employees;

-- 多列去重
SELECT DISTINCT department, job_title 
FROM employees;

3. HAVING(分组后过滤)

  • HAVING用于对GROUP BY分组后的结果进行过滤
  • 只能用于GROUP BY之后
  • 可以使用聚合函数作为过滤条件
  • WHERE是在分组前过滤,HAVING是在分组后过滤

示例:

SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

主要区别

1. 执行顺序:

  • WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY

2. 使用场景:

  • DISTINCT:消除重复行
  • GROUP BY:分组统计
  • HAVING:对分组结果进行过滤

3. 实际应用示例:

SELECT department, COUNT(DISTINCT employee_id) as unique_employees
FROM employees
GROUP BY department
HAVING COUNT(DISTINCT employee_id) > 5
ORDER BY unique_employees DESC;

这个查询:

  1. 按部门分组
  2. 统计每个部门的独特员工数(使用DISTINCT去重)
  3. 只显示超过5个独特员工的部门
  4. 按员工数降序排序

重要提示

  • WHERE在分组前过滤原始数据
  • HAVING在分组后过滤结果
  • DISTINCT可以独立使用,也可以在聚合函数中使用
  • GROUP BY通常与聚合函数配合使用
http://www.dtcms.com/a/55134.html

相关文章:

  • java开发常用注解
  • Flink深入浅出之01:应用场景、基本架构、部署模式
  • redis热key
  • C++【红黑树--debug】
  • OBJARX
  • 死锁的产生以及如何避免
  • loadingcache优化
  • STM32中断向量表的个人理解
  • 第 k 个缺失的正整数
  • DevSecOps CI/CD 管道中数字供应链安全的集成策略
  • 应用案例 | 精准控制,高效运行—宏集智能控制系统助力SCARA机器人极致性能
  • App Standby省电机制流程
  • 常见排序算法鉴赏(原理剖析+动图演示)
  • Vue-flow中动态流程图的实现
  • ffmpeg windows 基本命令
  • 安装并运行hadoop程序
  • macos 程序 运行
  • clang-format安装配置与vscode支持
  • 【附源码】Java动漫视频网站源码【带弹幕系统】+SpringBoot+VUE+前后端分离
  • 有关Java中的IO(2) --字符流以及其他流
  • upload-labs详解(13-20)文件上传分析
  • manus是什么?能干啥?
  • 基于SpringBoot的车辆违章信息管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)
  • LN1132 低功耗 300mA 低压差 CMOS 电压稳压器
  • debain12.9使用unsloth微调Qwen2.5模型
  • Ubuntu20.04搭建gerrit code review
  • nnMamba:基于状态空间模型的3D生物医学图像分割、分类和地标检测
  • 深度学习算法实战——情感语音合成(主页有源码)
  • LeetCode 2523. Closest Prime Numbers in Range(2025/3/7每日一题)