文档章节

MySQL 查询语句--------------进阶5:分组查询

o
 osc_isezqdgg
发布于 2019/09/18 14:51
字数 1036
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

#进阶5:分组查询
/*
   select 分组函数,列(要求出现在group by的后面)
   from 表 【where 筛选条件】 group by 分组的列表 【order by 子句】
注意:
    查询列表必须特殊,要求是分组函数和group by后出现的字段
特点:
	1.分组查询中的筛选条件分为两类
			数据源			位置		关键字
	分组前筛选      原始表		     group by  前	where
	分组后筛选      分组后的结果集	     group by  后	having

	分组函数做条件,一定是放在having子句之中

	group by子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),表达式或者函数(用的较少)
	也可以添加排序(排序放在分组查询的最后)

*/

# 引入:查询每个部门的平均工资
select avg(salary) from employees; #这个是整个表格的基本工资
#需要拆分小组
select avg(salary),department_id from employees group by department_id; #这个结果不太对

select distinct department_id from employees;

#案例1:查询每个工种的最高工资
select max(salary),job_id from employees group by job_id;

#案例2:查询每个位置上的部门个数
select count(department_id),location_id from departments group by location_id;


#添加  分组前  筛选条件
#案例1:查询邮箱中包含a字符的,每个部门的平均工资
select avg(salary),department_id from employees where email like "%a%" group by department_id;

#案例2:查询有奖金的每个领导手下员工的最高工资
select max(salary),manager_id from employees where commission_pct is not null group by manager_id;

#添加  分组后 的复杂的筛选条件
#案例1:查询哪个部门的员工个数>2
select count(*),department_id from employees where count(*)>2 group by department_id; #这个是错误的,因为employees中没有 count(*)>2
这里使用having
select count(*),department_id from employees group by department_id  having count(*)>2 ;

#案例2:查询每个工种有奖金的员工,他们的最高工资>12000的工种编号和最高工资
select max(salary),job_id from employees where commission_pct is not null  group by job_id;  #获得有奖金条件下的,每个工种的最高工工资
# 加上:他们的最高工资>12000的工种编号和最高工资
select max(salary),job_id from employees where commission_pct is not null  group by job_id having max(salary)>12000; 

#案例3:查询领导编号>102的每个领导手下的最低工资>5000的领导编号是哪个,以及其最低的工资
筛选条件:
where manager_id>102
having min(salary)>5000
完整:
select min(salary),manager_id from employees where manager_id>102 group by manager_id having min(salary)>5000;


#  group by 后跟 表达式或者分组函数(可以不是简单的字段)
#案例:按照员工姓名的长度分组,查询每一组的员工个数,筛选员工个数>5的有哪些
select count(employee_id),length(last_name) from employees group by length(last_name) having count(employee_id)>5;


# 按照多个字段分组
#案例:查询每个部门每个工种的员工的平均工资
select avg(salary),department_id,job_id from employees group by department_id,job_id;


# 添加排序
#案例:查询每个部门每个工种的员工的平均工资,并且按照平均工资的高低显示
select avg(salary),department_id,job_id from employees group by department_id,job_id order by avg(salary) desc;
order by 后面可以跟函数语句。



#题目1:查询各个job_id的员工工资的最大值、最小值、平均值、总和,并按照job_id升序
select max(salary),min(salary),avg(salary),sum(salary),job_id from employees group by job_id order by job_id asc;

#题目2:查询员工最高工资和最低工资的差距(difference)
select max(salary)-min(salary)  difference from employees;

#题目3:查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内。
筛选条件:
where manager_id is not null
having min(salary)>=6000
select min(salary),manager_id from employees where manager_id is not null group by manager_id having min(salary)>=6000;

#题目4:查询所有部门的编号,员工数量和工资的平均值,并按照平均工资降序
select count(employee_id),avg(salary),department_id from employees group by department_id order by avg(salary) desc;

#题目5:选择具有各个job_id的员工人数
select count(*),job_id from employees group by job_id;

  

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
java系列(1/4)基础阶段-MySQL(2/13)

##本单元目标一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★MySQL服务的登...

osc_ap8rqrw7
2019/08/20
2
0
MySQL基础

本单元目标 数据库的好处 数据库相关概念 数据库存储数据的特点 MySQL产品的介绍和安装 MySQL服务的启动和停止 MySQL服务的登录和退出 MySQL的常见命令 MySQL的语法规范 SQL的语言分类 SQL的...

stars永恒
2019/02/12
18
0
MySQL基础

本单元目标 数据库的好处 数据库相关概念 数据库存储数据的特点 MySQL产品的介绍和安装 MySQL服务的启动和停止 MySQL服务的登录和退出 MySQL的常见命令 MySQL的语法规范 SQL的语言分类 SQL的...

stars永恒
2019/02/12
0
0
mySQL

##本单元目标一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★MySQL服务的登...

osc_vl3n35s2
04/05
2
0
MYSQL 笔记

本单元目标 一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQLMySQL产品的介绍 MySQL产品的安装 MySQL服务的启动和停止MySQL服务的登录和退出...

linux_hx
2018/05/29
7
0

没有更多内容

加载失败,请刷新页面

加载更多

智慧旅游背景下的景区新模式建设方案研讨

景区经营权管理方法实践、县域旅游基本模式以及智慧旅游一直是业内探究的关键。学术界对景区经营权出让探究比较多,如阎友兵探究了根据实物期权基础理论的景区经营权出让期限制度分配;郭淳凡...

osc_rezr8v4k
10分钟前
0
0
详解区块链是什么!KiBiEx加密货币交易所~

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块...

osc_3361hjxk
11分钟前
0
0
详解区块链是什么!KiBiEx加密货币交易所~

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块...

osc_3ytpwpyb
13分钟前
4
0
详解区块链是什么!KiBiEx加密货币交易所~

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块...

osc_x4ot1joy
14分钟前
3
0
如何强制gradle重新下载依赖项? - How can I force gradle to redownload dependencies?

问题: 如何告诉gradle从存储库重新下载依赖项? 解决方案: 参考一: https://stackoom.com/question/uute/如何强制gradle重新下载依赖项 参考二: https://oldbug.net/q/uute/How-can-I-fo...

fyin1314
17分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部