当前位置: 首页 > news >正文

MYSQL——聚合查询

聚合查询就是一些MYSQL中的内置函数

聚合查询本质上是针对数据表中的行和行进行计算

函数说明
count([DISTINCT]expr)返回查询到的数据的数量,统计数据的行数
sum([DISTINCT]expr)返回查询到的数据的总和,不是数字没有意义
avg([DISTINCT]expr)返回查询到的数据的平均值,不是数字没有意义
max([DISTINCT]expr)返回查询到的数据的最大值,不是数字没有意义
min([DISTINCT]expr)返回查询到的数据的最小值,不是数字没有意义

以上操作都是针对某一列进行计算的

1.count();统计所有的行

 推荐使用count(*),这种写法是SQL标准中规定的


指定某一列进行统计

 若指定列中有null值,则null值不参与统计

2.sum(列名)求和

把查询结果中所有行中的指定列进行相加

注意:列的数据类型必须是数值型,不能是字符或日期

示例:计算学生语文成绩的总分

计算出来的学生语文成绩总分,结果在一个临时表中,计算出来的结果不受表中字段长度的约束

在计算语文分数的和时,可以使用别名


当进行运算时,运算数中有null时:

 当使用sum()时,null值不参与计算

结果在一个临时表中,结果不受表中字段的长度约束


 sun()中的字段不是数值类型时,会报一些警告


对同一个表中的多个列分别求和

语法格式:

select sum(列1),sum(列2),sum(列3) from 表名;

3.avg(列名)求平均值

对所有行的指定列进行求平均值的运算

对语文成绩求平均值

 在计算语文成绩平均值时,可以使用别名

在计算平均值时,avg的参数可以是表达式

求三科成绩总分的平均值

4.max(), min()求最大值和最小值

对所有行的列求最大值和最小值

求最小值:

 找出语文成绩的最大值:

 同一列可以使用多个聚合函数:

多个聚合函数可以同时使用: 


 sum(),avg(),min(),max()均不能在非数值类型的字段使用

5.group by子句(分组查询)

select中使用group by 子句可以对指定列进行分组查询。需要满足:使用group by进行分组查询时,select 指定的字段必须是“分组依据字段”,其他字段想要出现在select中则必须包含在聚合函数中。

分组依据字段:对哪个列分组

其他字段:没有指定分组的字段,呈现是要通过聚合函数,比如求和,求平均值


语法:

select column1,sum(column2),avg(column3),......from 表名 group by column1,column4;

1.column1:分组的列名

2.sum(column2),avg(column3):没有被分组的列(需要运算的列,但是要显示结果,那么就需要用到聚合函数)

3.group by:分组的关键字

4.column1,column4:要分组的列名

示例1:计算不同部门的平均工资

MYSQL内部先分组再计算


round(数值,小数点的位数)

让各部门工资的平均保留两位小数:


group by之后可以跟order by子句 

计算各部门的平均工资,按部门分组,然后按平均工资进行升序排序


HAVING(对分组后的结果进行条件过滤)

group by子句进行分组以后,需要对分组结果在进行条件过滤,不能使用where语句,而需要使用having

where是对表中每一行的真实数据进行过滤

having是对group by之后,计算出来的结果进行过滤

计算平均工资大于12000的部门:

having可以吧这个结果集中的数据进行过滤操作,平均工资这些数据并不是表中真正记录,而是通过聚合函数计算得出来的 

having跟在group by子句后面,对分组后的结果进行过滤


where用在from表名之后,也就是分组之前

having跟在group by子句之后

where是对真实数据进行过滤,having是对分组的结果进行过滤

只需要在合适的位置写where和having即可


查询每个部门的最高工资,最低工资,总工资和平均工资

1.按部门分组

2.使用相应的聚合函数


6.补充

count()的特殊用法:

当count用在having后后面时,可以用来计算每个组有多少条数据


建立一张新表,将旧表中的指定列的数据导入到新表中

语法:

insert into 表名[(column1,coulmn2,.....)]select........

插入查询结果 


http://www.mrgr.cn/news/11358.html

相关文章:

  • 漏洞挖掘 | 记一次Spring横向渗透
  • 【Linux入门】shell基础篇——if、case、与for循环
  • jieba分词和RecursiveCharacterTextSplitter分词
  • <数据集>考场行为识别数据集<目标检测>
  • undefined reference to `__aeabi_uidiv‘
  • 力扣3229.使数组等于目标数组所需的最少操作次数
  • Nginx+Tomcat负载均衡、动静分离
  • Netty
  • 峟思固定测斜仪的工作原理与应用
  • streeapptest 工具编译看 + 测试rk3568
  • 【操作系统】实验:内存管理
  • 箭头函数返回值书写错误导致的bug
  • 网络安全“两高一弱”科普
  • 慧能泰HUSB380A替代SC2151A同功能替换更有性价比
  • yield 详解
  • [Meachines] [Medium] Chatterbox AChat 缓冲区溢出 + MSF自动进程迁移+ icacls权限修改
  • [杂谈]错误的设计
  • 【C++】继承详解
  • ZNS SSD是不是持久缓存的理想选择?
  • 数据库基础知识