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

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.kler.cn/news/284856.html

相关文章:

  • B树及其Java实现详解
  • 续:MySQL的半同步模式
  • APO 新发版支持Skywalking Agent接入
  • unity的问题记录(信息管理)
  • 【Java设计模式】责任链模式:构建强大的请求处理机制
  • 技术成神之路:设计模式(十二)模板方法模式
  • SQL存储过程:数据库编程的瑞士军刀
  • Java中的注解(Annotation)
  • 谷粒商城实战笔记-269~271-商城业务-订单服务-bug修改
  • Python3遍历文件夹下的文件
  • AI编码新时代:免费人工智能助手Blackbox AI
  • Spring Boot 集成 JdbcTemplate(盘它!)
  • 使用WSL在Windows上安装Linux
  • 【微信小程序】SpringBoot集成微信小程序(多小程序集成)
  • opencv/c++的一些简单的操作(入门)
  • 趣味算法------多重背包问题
  • 【拉取Git项目到本地,知识小记,后续再改】
  • EmguCV学习笔记 VB.Net 8.1 漫水填充法 floodFill
  • volatile 关键字
  • Mac 安装Hadoop教程
  • 【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度
  • Linux - 如何在 Linux 中使用`find` 命令
  • JAVA安全之Velocity模板注入刨析
  • 字和字节的区别?
  • 分享两个方法分析python打包exe
  • Cookie、Session、Token:三者的区别与应用
  • 【QNX+Android虚拟化方案】112 - 获取 88Q5152 Switch Port1、Port2 端口的主从模式 / 传输速率 / 链路状态
  • 基于 web教学管理系统设计与实现
  • 筛法求欧拉函数
  • sysfs系统