MySQL 聚合函数与分组查询全解析

文章目录

一、插入查询结果

现在有两张表,想把stu中的数据复制到stu1里面

有以下三种方法

  • 1、 一条一条数据重新插入一遍
  • 2、把原来的数据导出来,再把表名改一下,再改入到目标表中
  • 3、可以使用insert into select 语句

推荐使用第三种方法

sql 复制代码
INSERT INTO 目标表名 [(列1, 列2, ...)]    -- 目标表是插入数据的表
SELECT 列1, 列2, ...  --列与列之间需要匹配
FROM 旧表表名      -- 旧表是复制数据的表
WHERE 条件;

示例:


二、聚合函数

MYSQL中内置的函数

常用聚合函数(含示例)

聚合函数这些操作都是针对某一列进行运算的,表达式查询是对一行记录中的列与列之间进行运算的

函数 作用说明 示例
COUNT([DISTINCT] expr) 返回查询到的数据数量(统计行数) SELECT COUNT(*) FROM student;
SUM([DISTINCT] expr) 返回某列数据的总和(仅适用于数值类型) SELECT SUM(score) FROM student;
AVG([DISTINCT] expr) 返回某列数据的平均值(仅适用于数值类型) SELECT AVG(score) FROM student;
MAX([DISTINCT] expr) 返回某列数据的最大值 SELECT MAX(score) FROM student;
MIN([DISTINCT] expr) 返回某列数据的最小值 SELECT MIN(score) FROM student;

count()统计所有的行
sql 复制代码
--count()
select count() from 表名;

示例:

  • *统计表中的行数
  • 使用count()统计指定列,null值不参与统计

SUM(列名) 求和

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

  • 计算所有学生的语文成绩的总分
  • 在sum()求和时,null值不参与运算
AVG() 求平均值

示例:

  • 对所有同学的数学成绩求平均值
  • 求语文,数学,英语三门课的总分的平均值(参数可以是表达式),也可以使用别名

MAX(),MIN()

求所有行中指定列的最大值,最小值
示例:

  • 找出语文成绩的最高分和英语成绩的最低分(多个聚合函数可以同时使用),可以使用别名

GROUP BY子句

在 SELECT 查询中使用 GROUP BY 可以把数据按指定列分组。分组后,SELECT 里直接列出的字段必须是用来分组的列;如果想显示其他列的值,就需要用聚合函数(比如 SUM、COUNT、AVG 等)来处理。

sql 复制代码
SELECT column1, SUM(column2), ...
FROM table_name
GROUP BY column1, column3;

说明:

  • column1, column3:要分组的列(可以分多列)

  • SUM(column2):没有被分组的列,如果想在结果里显示,就必须用聚合函数处理(如 SUM、COUNT、AVG 等)

  • GROUP BY:分组查询的关键字


示例:

  • 计算不同角色的工资平均值
    mysql内部先分组再计算
  • round(数值,小数点位数)
  • group by 后面可以放order by,对分组结果进行排序

HAVING子句

group by子句进行分组以后,需要对分组之后的结果进行过滤,不能使用where语句,要使用having子句
⚠️ 注意:where 和having的区别总结

特点 WHERE HAVING
作用对象 原始数据行 分组后的聚合结果
使用位置 GROUP BY 前 GROUP BY 后
函数支持 不支持聚合函数 支持聚合函数(如 COUNT, SUM, AVG)

示例:

  • 对角色分组后的工资进行筛选
  • 显示每个角色的最高工资,最低工资,平均工资
  • 显示平均工资低于1500的角色和它的平均工资
相关推荐
知识分享小能手2 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 数据库的备份与恢复 — 语法知识点及使用方法详解(19)
数据库·学习·sqlserver
倔强的石头1062 小时前
一卡通核心交易平台的国产数据库实践解析:架构、迁移与高可用落地
数据库·架构·kingbase
GDAL2 小时前
SQLite 核心特性与应用实战教程:轻量却不简单的嵌入式数据库
数据库·sqlite
源码获取_wx:Fegn08952 小时前
计算机毕业设计|基于springboot + vue家政服务平台系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
空空潍2 小时前
Redis点评实战篇-关注推送
java·数据库·redis·缓存
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue社区智慧消防管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
山岚的运维笔记2 小时前
SQL Server笔记 -- 第74章:权限或许可 第75章:SQLCMD 第76章:资源调控器
数据库·笔记·sql·microsoft·oracle·sqlserver
舟舟亢亢2 小时前
Redis知识复习笔记(上)
数据库·redis·笔记
青春:一叶知秋2 小时前
【Redis存储】持久化
数据库·redis·缓存