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 
select dept , max(salary) AS MAXIMUMFROM STAFFGROUP 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 MAXIMUMFROM STAFFWHERE hiredate > '2010-01-01'GROUP BY dept,edlevel
dept     edlevel     MAXIMUM设计部      4           2300设计部      5       2600销售部      5       3000销售部      7        3500

GROUP BY子句之后使用Having子句

可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。因此,在GROUP BY子句后面包含了一个HAVING子句。HAVING类似于WHERE(唯一的差别是WHERE过滤行,HAVING过滤组)AVING支持所有WHERE操作符。

例如,查找雇员数超过2个的部门的最高和最低薪水:

SELECT dept ,MAX(salary) AS MAXIMUM ,MIN(salary) AS MINIMUMFROM STAFFGROUP BY deptHAVING COUNT(*) > 2ORDER BY dept
dept        MAXIMUM             MINIMUM设计部      2600  2100销售部      3500 3000
SELECT dept,MAX(salary) AS MAXIMUM,MIN(salary) AS MINIMUMFROM STAFFGROUP BY deptHAVING AVG(salary) > 3000ORDER BY dept
dept   MAXIMUM   MINIMUM销售部      35003000

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
  3. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  4. Android(安卓)- Manifest 文件 详解
  5. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  6. Selector、shape详解(一)
  7. android2.2资源文件详解4--menu文件夹下的菜单定义
  8. android从服务器下载文件(php+apache+win7+MySql)
  9. Android发送短信方法实例详解

随机推荐

  1. Android(安卓)之 Context Menu 上下文菜
  2. 开发Android第四步,Android NDK 及 androi
  3. 向android studio导入android源生app
  4. View组件之各xml属性
  5. AndroidStudio 备忘录之Spinner(下拉列表)
  6. Android SDK 2.2 开发环境安装
  7. Android中的四种Activity
  8. APEX - Android(安卓)Q
  9. Android(安卓)Studio删除无用的资源文件
  10. Android的Zipalign优化