【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;
相关推荐
一 乐1 小时前
基于vue船运物流管理系统设计与实现(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端·船运系统
jerry6092 小时前
注解(Annotation)
java·数据库·sql
lwprain3 小时前
springboot 2.7.6 security mysql redis jwt配置例子
spring boot·redis·mysql
vcshcn3 小时前
DBASE DBF数据库文件解析
数据库·dbase
AIGC大时代5 小时前
对比DeepSeek、ChatGPT和Kimi的学术写作撰写引言能力
数据库·论文阅读·人工智能·chatgpt·数据分析·prompt
如风暖阳5 小时前
Redis背景介绍
数据库·redis·缓存
lingllllove6 小时前
Redis脑裂问题详解及解决方案
数据库·redis·缓存
字节全栈_BjO6 小时前
mysql死锁排查_mysql 死锁问题排查
android·数据库·mysql
微光守望者6 小时前
Redis常见命令
数据库·redis·缓存
martian6657 小时前
第六篇:事务与并发控制
数据库