【Mysql数据库基础03】分组函数(聚合函数)、分组查询

分组函数(聚合函数)、分组查询

  • [1 分组函数](#1 分组函数)
    • [1.1 简单的使用](#1.1 简单的使用)
    • [1.2 是否忽略null值](#1.2 是否忽略null值)
    • [1.3 和关键字搭配使用](#1.3 和关键字搭配使用)
    • [1.4 count函数的详细介绍](#1.4 count函数的详细介绍)
    • [1.5 练习](#1.5 练习)
  • [2 分组查询Group by](#2 分组查询Group by)
    • [2.1 简单的分组查询](#2.1 简单的分组查询)
    • [2.2 练习](#2.2 练习)
  • [3 格式投票:yum:](#3 格式投票:yum:)

1 分组函数

1.1 简单的使用

  1. COUNT(expression):计算符合指定条件的行数。常用于计算记录数量。

  2. SUM(expression):对指定列的值求和。通常用于计算数值型字段的总和。

  3. AVG(expression):计算指定列的平均值。常用于计算数值型字段的平均值。

  4. MIN(expression):计算指定列的最小值。用于找出某一列中的最小值。

  5. MAX(expression):计算指定列的最大值。用于找出某一列中的最大值。

sql 复制代码
select 
	sum(salary) as 和,
	count(salary) as 个数,
	round(avg(salary),2) as 平均,
	max(salary) as 最高,
	min(salary) as 最低
from 
	employees;

1.2 是否忽略null值

null+任意值=null

sql 复制代码
select sum(commission_pct),avg(commission_pct)
from employees;

1.1的分组函数都忽略null值

1.3 和关键字搭配使用

sql 复制代码
select count(distinct salary) as 有几种工资
from employees;

1.4 count函数的详细介绍

统计行数

sql 复制代码
select count(*)
from employees;

1.5 练习

1

sql 复制代码
select
	max(salary) as 最大值, min(salary) as 最小值, avg(salary) as 平均值, sum(salary) as 总和
from employees;

2

sql 复制代码
select DATEDIFF(max(hiredate),min(hiredate)) as DIFFERENCE
from employees;

3

sql 复制代码
select count(*) as 员工个数
from employees
where department_id=90;

2 分组查询Group by

sql 复制代码
select
from
where
group by
order by

2.1 简单的分组查询

1.查询每个工种的最高工资

sql 复制代码
select max(salary),job_id
from employees
group by job_id;

2.查询哪个部门的员工个数>2

sql 复制代码
select count(*),department_id
from employees
group by department_id
having count(*)>2;

3.查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

sql 复制代码
select max(salary),job_id
from employees
where commission_pct is not null
group byjob_id
having max(salary)>12000;

4.查询领导编号>102的每个领导手下的最低工资>5000的领导编号是哪个,以及其最低工资

sql 复制代码
select manager_id,min(salary)
from employees
where manager_id>102
group by manager_id
having min(salary)>5000;

2.2 练习

1.查询各job_id的员工工资的最大值,最小值,平均值,总和,并按job_id升序

sql 复制代码
select job_id,max(salary),min(salary),avg(salary),sum(salary)
from employees
group by job_id
order by job_id asc;

2.查询员工最高工资和最低工资的差距(DIFFERENCE)

sql 复制代码
select max(salary)-min(salary) as DIFFERENCE
from employees;

3.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内

sql 复制代码
select manager_id,min(salary)
from employees
where manager_id is not null
group by manager_id
having min(salary)>=6000;

4.查询所有部门的编号,员工数量和工资平均值,并按平均工资降序

sql 复制代码
select department_id,count(*) as 员工数量,avg(salary)
from employees
group by department_id
order by avg(salary) desc;

5.选择具有各个job_id的员工人数

sql 复制代码
select job_id,count(*) as 员工人数
from employees
group by job_id;

3 格式投票😋

题外话,有一个格式投票,大家认为哪种好看呢

格式1.

sql 复制代码
select employee_id
from employee;

格式2.

sql 复制代码
select
	employee_id
from
	employee;
相关推荐
bang___bang_18 分钟前
PostgreSQL内幕剖析——结构与架构
数据库·postgresql
龙俊亨1 小时前
达梦数据库查看各数据库表内容
数据库
万能程序员-传康Kk1 小时前
【Python+flask+mysql】网易云数据可视化分析(全网首发)
python·mysql·信息可视化·数据分析·flask·可视化·网易云
·云扬·2 小时前
【PmHub后端篇】PmHub 中缓存与数据库一致性的实现方案及分析
数据库·缓存
kaixiang3002 小时前
sqli-labs靶场23-28a关(过滤)
数据库·sql
不剪发的Tony老师3 小时前
数据库行业竞争加剧,MySQL 9.3.0 企业版开始支持个人下载
数据库·mysql
淡定是个好东西3 小时前
springboot连接高斯数据库(GaussDB)踩坑指南
数据库·gaussdb
追风赶月、4 小时前
【Redis】哨兵(Sentinel)机制
数据库·redis·sentinel
悟能不能悟4 小时前
mysql的not exists走索引吗
数据库·mysql
明月与玄武4 小时前
Jmeter -- JDBC驱动连接数据库超详细指南
数据库·jmeter·配置jdbc连接