MySQL分组查询 | 您所在的位置:网站首页 › sql增加排序字段怎么弄 › MySQL分组查询 |
MySQL分组查询
分组数据: group by子句 可以使用group by子句将表中的数据分成若干组 语法: select 分组函数,列(分组查询搭配分组函数使用,要求列要出现在group by后面) from 表 【where 筛选条件】 group by 表达式 【order by 字段】 特点: 1. 分组查询中的筛选条件分为两类: 注: ①分组函数做条件放在having子句中 ②能用分组前筛选的,优先考虑使用分组前筛选 数据源(针对的表)位置关键字分组前筛选:原始表group by的前面where分组后筛选:分组后的结果集group by的后面having2. group by子句支持单个字段分组、多个字段分组(多个字段之间用逗号隔开没有顺序要求)、表达式或函数(相对前两种不常用) 3. 也可以添加排序(排序放在整个分组查询的最后) 一. 简单查询 :1.查询每个工种的最高工资 1.查询邮箱中包含a字符的,每个部门的平均工资 2.查询每个领导手下有奖金的员工最高工资 注:以上两个筛选条件涉及的(where后面的)字段都来自原始表(from后面的表) 三. 添加复杂筛选条件 :1.查询部门的员工个数>2 第①步: 查询每个部门的员工个数 Where 是个约束声明在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数” Having是个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数” 简而言之where出结果前用,having出结果后筛选用 2.查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资 首先是查询有奖金的员工,进行分组,最后筛选出最高工资大于12000 第①步 : 查询每个工种有奖金的员工的最高工资 3.查询领导编号>140的领导编号以及手下员工最低工资,要求他手下员工最低工资>5000 第①步 :查询每个领导手下的员工的最低工资 按员工姓名的长度分组,查询每一组的员工个数,筛选员工个>20的有哪些 查询每个部门每个工种的员工的平均工资 查询每个部门每个工种的员工的平均工资,并且按平均工资的高低显示,要求部门编号不为空且平均工资>20000 |
CopyRight 2018-2019 实验室设备网 版权所有 |