GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。

select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组返回一个结果。

某个员工信息表结构和数据如下:

id  name  dept  salary  edlevel       hiredate 
  1    张三  开发部 2000     3             2009-10-11
  2    李四  开发部 2500      3             2009-10-01
  3    王五  设计部 2600     5              2010-10-02
  4    王六  设计部 2300     4           2010-10-03
  5    马七  设计部 2100     4         2010-10-06
  6    赵八  销售部 3000     5         2010-10-05
  7    钱九  销售部 3100     7         2010-10-07
  8    孙十  销售部 3500     7         2010-10-06 
我想列出每个部门最高薪水的结果,sql语句如下:
select dept , max(salary) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
查询结果如下:
dept       MAXIMUM
开发部      4500
设计部      2600
销售部      3500
解释一下这个结果:
1、 满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有group by中包含的列dept;
2、“列函数对于group by子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
将where子句与group by子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准where子句。必须在group by子句之前指定where子句
例如,查询公司2010年入职的各个部门每个级别里的最高薪水
SELECT dept,edlevel,MAX(salary) AS MAXIMUM
FROM STAFF
WHERE hiredate > '2010-01-01'
GROUP BY dept,edlevel
查询结果如下:
dept     edlevel     MAXIMUM
设计部      4             2300
设计部      5           2600
销售部      5           3000
销售部      7            3500
在SELECT语句中指定的每个列名也在GROUP BY子句中提到,未在这两个地方提到的列名将产生错误。GROUP BY子句对dept和edlevel的每个唯一组合各返回一行。
GROUP BY子句之后使用Having子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。因此,在GROUP BY子句后面包含了一个HAVING子句。HAVING类似于WHERE(唯一的差别是WHERE过滤行,HAVING过滤组)AVING支持所有WHERE操作符。
例如,查找雇员数超过2个的部门的最高和最低薪水:
SELECT dept ,MAX(salary) AS MAXIMUM ,MIN(salary) AS MINIMUM
FROM STAFF
GROUP BY dept
HAVING COUNT(*) > 2
ORDER BY dept
查询结果如下:
dept     MAXIMUM       MINIMUM
设计部      2600          2100
销售部     3500         3000
例如,查找雇员平均工资大于3000的部门的最高薪水和最低薪水:
SELECT dept,MAX(salary) AS MAXIMUM,MIN(salary) AS MINIMUM
FROM STAFF
GROUP BY dept
HAVING AVG(salary) > 3000
ORDER BY dept
查询结果如下:
dept       MAXIMUM   MINIMUM
销售部          3500        3000

---------------------

原文:https://blog.csdn.net/bingogirl/article/details/52559302

mysql GROUP BY和HAVING相关推荐

  1. mysql group by 天_MySQL group by语句如何优化

    在MySQL中,新建立一张表,该表有三个字段,分别是id,a,b,插入1000条每个字段都相等的记录,如下: mysql> show create table t1G ************* ...

  2. MySQL group replication

    本篇文章主要讲解MySQL group replication介绍,文中有关MySQL,group的内容,希望对大家有所帮助. "MySQL group replication" ...

  3. mysql group by 报错 ,only_full_group_by 三种解决方案

    mysql group by 报错 ,only_full_group_by 三种解决方案 参考文章: (1)mysql group by 报错 ,only_full_group_by 三种解决方案 ( ...

  4. MySQL Group Replication调研剖析

    以下转自 http://www.iteye.com/news/32090 MySQL Group Replication调研剖析 引用 作者简介:王伟,京东基础平台数据库工程师,京东商城基础平台部门包 ...

  5. mysql having实例_Mysql必读mysql group by having 实例代码

    <MysqL必读MysqL group by having 实例代码>要点: 本文介绍了MysqL必读MysqL group by having 实例代码,希望对您有用.如果有疑问,可以联 ...

  6. mysql mgr简介_mysql8.0初探:(二)MySQL Group Replication-MGR集群简介

    mysql8.0初探:(二)MySQL Group Replication-MGR集群简介 发布时间:2020-06-12 23:59:17 来源:51CTO 阅读:49832 作者:arthur37 ...

  7. mysql group replication 安装配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  8. MySQL Group Replication 介绍

    2016-12-12,一个重要的日子,mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replica ...

  9. MySQL Group Replication-MGR集群简介

    简介 MySQL Group Replication(简称MGR)字面意思是mysql组复制的意思,但其实他是一个高可用的集群架构,暂时只支持mysql5.7和mysql8.0版本. 是MySQL官方 ...

  10. Mysql group by 排序问题

    Mysql group by 排序问题 类如 有一个 帖子的回复表,posts( id , tid , subject , message , dateline ) , id 为 自动增长字段, ti ...

最新文章

  1. phpstudy下的mysql升级
  2. Spring mvc环境搭建
  3. Mac启动时:boot task failed:fsck-safe处理办法
  4. 存储过程IN参数疑难问题解决方法【真正解决】
  5. linux 添加用户_linux ---添加普通用户账号
  6. java model 中文乱码,java传值乱码解决方法
  7. Mongodb查询分析器解析
  8. centos7离线安装mysql_Centos7离线安装metasploit详细教程
  9. Springcloud整理
  10. iPhone 14系列影像规格曝光:长焦镜头或再度缺席
  11. js 数字格式化,只能输入正负整数,小数
  12. 解决哈希冲突的三种方法(拉链法、开放地址法、再散列法)
  13. yaml 变量引用_yaml语法简介
  14. 51单片机:独立按键
  15. c语言卸载了软件打不开了,控制面板卸载不了程序,手把手教你如何处理控制面板中卸载不掉的软件...
  16. EXCEL数据分析——分列
  17. vue-项目使用过程中遇到的一些问题
  18. MFC中在界面上添加背景图片的方法
  19. NCBI BLAST工具本地化
  20. 基于Spring Boot的点餐微信小程序设计与实现

热门文章

  1. DOM节点的属性和方法
  2. 51Talk2019战略升级,发布互动教学产品妖果AI
  3. GPG终极指南(加密/签名)
  4. 面向对象基础知识四:关联关系
  5. NBU备份数据库时的ORA-27211错误分析解决
  6. linux sudo apt-get,linux sudo apt-get用法详解
  7. 华为开通api服务_入冬第一场技术盛宴!DevRun开发者沙龙华为云武汉专场举办
  8. FreeSWITCH mod_callcenter 整理
  9. 最短路 spfa算法
  10. python序列操作_操作序列(python)