mysql group by 用法解析(详细)
group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 某个员工信息表结构和数据如下:id name dept salary edlevel hiredate 1 张三 开发部 2000 3 2009-10-112 李四 开发部 2500 3 2009-10-013 王五 设计部 2600 5 2010-10-024 王六 设计部 2300 4 2010-10-035 马七 设计部 2100 4 2010-10-066 赵八 销售部 3000 5 2010-10-057 钱九 销售部 3100 7 2010-10-078 孙十 销售部 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 用法解析(详细)相关推荐
- 转:mysql group by 用法解析(详细)
group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...
- mysql中group by用法解析
MysqL group by 用法解析 2013年03月08日 08:43:30 JavaDynamic 阅读数:25184 一.group by语法可以根据给定数据列的每个成员对查询结果进行分组统计 ...
- group by 用法解析
group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...
- mysql have_mysql having用法解析
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. ...
- MySQL Group Replication [Single-Primary Mode] 详细搭建部署过程
1,关于MySQL Group Replication 基于组的复制(Group-basedReplication)是一种被使用在容错系统中的技术.Replication-group(复制组)是由能够 ...
- MySQL Group Replication [Multi-Primary Mode] 详细搭建部署过程
1,关于MySQL Group Replication 基于组的复制(Group-basedReplication)是一种被使用在容错系统中的技术.Replication-group(复制组)是由能够 ...
- MySQL for update 用法解析
目录 基本原理与用法 一定需要注意的点 其他补充 间隙锁的范围: 锁的介绍: 索引失效的常见场景: 基本原理与用法 MySQL在查询语句后面加上 for update ,例如 select * fro ...
- mysql union result,【经验】Mysql的UNION用法解析及TP中写法
最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...
- group by 用法解析_GRE数学专项练习及解析概率
GRE数学专项练习的题目主要来自<官方指南>(OG).<官方数学150>(ETS150).鸡精和个别来源未知的题目(同样适合练习),接下来我会持续更新各种专项练习和题目解析.概 ...
- sql中group by 和having 用法解析
--sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". --它的作用是通过一定的规则将一 ...
最新文章
- Java基础点:多线程
- 归属地的判断规则有吗_IPO|创业板注册制规则-详解股权激励新规
- 联想微型计算机报价,联想电脑一体机报价
- Oracle在开源Mission Control后将其开发团队解散
- java学习(153):字符输出流
- #Tomcat# 本地正常但是部署到服务器后,mysql插入中文乱码问题解决!
- 二项分布的采样或抽样(java实现)
- 数值分析(6)-函数逼近的基本概念
- NT平台ADSL拨号连接密码恢复原理
- 作用JavaScript访问和操作数据库
- C# 大地测量高斯投影正反算公式计算程序
- java实训心得感想30字,java实训心得体会感想
- 拉卡拉支付开启生态化移动支付新趋势
- python爬app_app爬虫(python app爬虫)
- 协同演化博弈模型matlab,求教 matlab做演化博弈
- python牛顿法求方程的根_python计算方程式根的方法 如何用python计算三元方程
- 7 月 24 号腾讯副总张小龙内部讲座《通过微信谈产品》
- 海阔凭鱼跃,天高任鸟飞
- Django开发个人博客网站——12、实现不同大小的标签云样式
- 解决 输入kubectl get pods -o wide后没有显示ip
热门文章
- lisp函数大全 微盘_LISP函数大全
- 市民卡怎么登录显示服务器繁忙,2分钟办理一笔业务 杭州网记者体验最具人气的“市民卡”窗口服务...
- channel串行化_为什么串行接口比并行接口快
- html中多个div分开排列,CSS+DIV设计实例:多个DIV排列时居中
- 基于xml的c语言项目,Spring基于XML装配Bean
- apache ii评分怎么评_APACHEⅡ评分系统
- DRF的解析器和渲染器
- Shiro笔记(四)编码/加密
- 2741. [济南集训 2017] 掰巧克力
- Sql Server 中常用的字符串函数