MysqL group by 用法解析
2013年03月08日 08:43:30 JavaDynamic 阅读数:25184
一、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
开发部 2500
设计部 2600
销售部 3500
解释一下这个结果:
1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
例如,查询每个部门的总的薪水数
SELECT DEPT, sum( SALARY ) AS total
FROM STAFF GROUP BY DEPT
查询结果如下:
DEPT total
开发部 4500
设计部 7000
销售部 9600
二、将 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
ORDER 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子句可包含一个或多个用AND和OR连接的谓词。每个谓词将组特性(如AVG(SALARY))与下列之一进行比较:
例如:寻找雇员数超过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

mysql中group by用法解析相关推荐

  1. mysql中去重的用法_mysql中去重 distinct 用法

    在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...

  2. 转:mysql group by 用法解析(详细)

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

  3. group by 用法解析

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

  4. MySQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID ...

  5. MySQL中group_concat函数用法总结

    MySQL中group_concat函数用法总结 一.group_concat函数的功能 将group by产生的同一个分组中的值连接起来,返回一个字符串结果.group_concat函数首先根据gr ...

  6. mysql limit 执行顺序_SQL语句执行顺序及MySQL中limit的用法

    一. SQL语句执行顺序及MySQL中limit的用法 执行顺序:from... where...group by... having.... select ... order by... limit ...

  7. MySQL中having的用法

    MySQL中having的用法 mysql中,当我们用到聚合函数,如sum,count后,又需要筛选条件时,having就派上用场了,因为WHERE是在聚合前筛选记录的,having和group by ...

  8. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  9. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

最新文章

  1. 软件构造 第二章 第一节 软件生命周期和版本控制
  2. [LeetCode] Sum of Two Integers 两数之和
  3. PowerShell攻防进阶篇:nishang工具用法详解
  4. mysql5.1 mysiam_MySQL 数据库清理MyISAM Innodb表(支持MySQL5.1.6以上的版本)
  5. Mac OS使用技巧十七:丰富多彩的花哨输入法
  6. [C++STL]常用集合算法
  7. mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法...
  8. appium+python自动化项目实战(二):项目工程结构
  9. Oracle查询指定表里的触发器
  10. [二叉树|深搜|dfs] leetcode 404 左叶子之和
  11. 干加个偏旁可以变成什么字_字好看的孩子,都是用了这些小学生学写字的方法...
  12. linux部署java命令
  13. linux下find命令-atime,-ctime,-mtime真正含义
  14. iPhone--卡贴是什么
  15. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.29日(2019省赛A组第7题)
  16. iOS-App Logo和闪屏图尺寸
  17. 5分钟使用Echarts轻松实现地图下钻
  18. 想学游戏建模要从哪里开始?,外包私活怎么接?
  19. python 拼音库_python有没有拼音库python进阶之socket详解
  20. 《Master Opencv...读书笔记》非刚性人脸跟踪 II

热门文章

  1. 友盟集成第三方分享和登录
  2. Android 10 新增物理按键
  3. **matlab中hold on 和hold off用法**
  4. POJ 1076 Bowl 笔记
  5. 微服务实战之春云与刀客(一)—— 微服务开篇
  6. dapi 基于Django的轻量级接口测试平台一
  7. COVID-19 Cases Prediction (Regression)
  8. 人力资源系统开发案例
  9. 用python画风景图_NV这个AI黑科技简直绝了!几笔画出逼真照片
  10. matlab绘制星座图,怎么弄星座图:systemview 信号星座图怎么画