【MySQL】聚合函数和分组(查找)

聚合函数

函数 说明
COUNT(DISTINCT expr) 返回查询到的数据的 数量
SUM(DISTINCT expr) 返回查询到的数据的 总和,不是数字没有意义
AVG(DISTINCT expr) 返回查询到的数据的 平均值,不是数字没有意义
MAX(DISTINCT expr) 返回查询到的数据的 最大值,不是数字没有意义
MIN(DISTINCT expr) 返回查询到的数据的 最小值,不是数字没有意义

分组

在select中使用group by 子句可以对指定列进行分组查询

分组聚合

分组聚合主要使用的是 group by 和 having子句。分组聚合需要注意的是要先进行分组,然后再聚合。

一共有三张表:

1.EMP:员工表

2.DEPT:部门表

3.SALGRADE:工资等级表

如何显示每个部门的平均工资和最高工资

select deptno,max(sal) 最高 ,avg(sal) 平均 from emp group by deptno;

显示每个部门的每种岗位的平均工资和最低工资

select deptno,job,avg(sal) 平均,min(sal) 最低 from emp group by deptno,job;

显示平均工资低于2000的部门和它的平均工资(SMITH员工不参与)

select deptno,job,avg(sal) myavg from emp where ename!='SMITH' group by deptno,job having myavg<2000;

where 和 having 的区别

where是过滤表中数据的,而having是过滤分组数据的。在分组之前需要先通过where来拿到所要用到的数据。

相关推荐
仍然.8 小时前
Redis---缓存
数据库·redis·缓存
Aloudata8 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@8 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog8 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模8 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡8 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影8 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔9 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
liulilittle9 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen9 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust