文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【MySQL】聚合函数

2023-08-31 18:21

关注

注意:MySQL中聚合函数是不能嵌套使用的

我们创建一个表t_decade_book来进行验证

DROP TABLE IF EXISTS `t_decade_book`;CREATE TABLE `t_decade_book`  (  `book_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '书id',  `book_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书名',  `book_count` int(10) DEFAULT NULL COMMENT '数量',  `detail` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述',  PRIMARY KEY (`book_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `t_decade_book` VALUES (1, 'Java从入门到秃头', 20, 'Java学习');INSERT INTO `t_decade_book` VALUES (2, '数据库从删库到跑路', 20, '数据库学习');INSERT INTO `t_decade_book` VALUES (3, '测试从入职到干架', 20, '测试脚本学习');INSERT INTO `t_decade_book` VALUES (4, '划水越划越爽', NULL, '划水技巧学习');

得到的表数据如下
在这里插入图片描述

SELECT AVG(book_count),SUM(book_count),AVG(book_count)*4 FROM t_decade_book;SELECT MAX(book_count),MIN(book_count),MAX(book_name),MIN(book_name) FROM t_decade_book;SELECT COUNT(book_id),COUNT(1),COUNT(*),COUNT(book_count) FROM t_decade_book;SELECT AVG(book_count),SUM(book_count),SUM(book_count)/4,SUM(book_count)/COUNT(book_count) FROM t_decade_book;

执行结果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

首先我们向之前创建的t_decade_blog表中插入一条数据

INSERT INTO t_decade_blog(id,name,author,create_time,views)VALUES('d3258b79-d543-49bb-9850-16cac7566666','JVM系列','十年',NOW(),8000);

表格中结果如下
在这里插入图片描述

然后我们测试一下GROUP BY操作

# 根据单列进行分组SELECT author,AVG(views) FROM t_decade_blog GROUP BY author;# 根据多列进行分组,如果分组的条件相同,顺序不同不会影响最终结果# 我们可以理解为根据这些条件进行组合,只有符合这些条件的才会分到一个组里SELECT id,author,AVG(views) FROM t_decade_blog GROUP BY id,author;SELECT author,id,AVG(views) FROM t_decade_blog GROUP BY author,id;# 当使用GROUP BY关键字时,SELECT中涉及到的非聚合函数包含的字段,必须出现在GROUP BY后面# 但是GROUP BY关键字后面的字段不一定要出现在SELECT之后# 另外,在不使用GROUP BY时,聚合函数不能和普通字段放在一起进行查询SELECT author,id,AVG(views) FROM t_decade_blog GROUP BY author;# with rollup作用在聚合函数。如果聚合函数是COUNT(*)则会在统计的记录中再次求COUNT(*)# 如果是AVG(),则会去除分组条件,求该字段的AVG()# 使用WITH ROLLUP后不能再使用ORDER BYSELECT author,AVG(views) FROM t_decade_blog GROUP BY author WITH ROLLUP;SELECT book_id,AVG(book_count) FROM t_decade_book GROUP BY book_id WITH ROLLUP;SELECT author,COUNT(views) FROM t_decade_blog GROUP BY author WITH ROLLUP;

执行结果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意GROUP BY的使用顺序

HAVING 子句可以让我们筛选分组后的各组数据

HAVINGWHERE的对比

# 错误演示SELECT id,MAX(views)FROM t_decade_blogWHERE MAX(views) > 4000GROUP BY id;SELECT id,MAX(views)FROM t_decade_blogGROUP BY idHAVING MAX(views) > 4000;# 如果我们想查出特定博客id中最大浏览量大于4000的书籍# 方式一:WHERE搭配HAVING,推荐此方式,执行效率更高SELECT id,MAX(views)FROM t_decade_blogWHERE id IN ('76782763-48d0-4cef-b8e1-1054e181e41d','d3258b79-d543-49bb-9850-16cac7565f57','d3258b79-d543-49bb-9850-16cac7566666')GROUP BY idHAVING MAX(views) > 4000;# 方式二SELECT id,MAX(views)FROM t_decade_blogGROUP BY idHAVING MAX(views) > 4000 AND id IN ('76782763-48d0-4cef-b8e1-1054e181e41d','d3258b79-d543-49bb-9850-16cac7565f57','d3258b79-d543-49bb-9850-16cac7566666');

1、SELECT语句的完整结构

SQL92语法结构

SELECT 字段1,字段2,...(可能存在聚合函数)FROM1,2,...WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件GROUP BY 分组字段1,分组字段2...HAVING 包含聚合函数的过滤条件ORDER BY 排序字段1,排序字段2...(ASC / DESC)LIMIT 偏移量,条目数

SQL99语法结构

SELECT 字段1,字段2,...(可能存在聚合函数)FROM1 (LEFT / RIGHT) JOIN2 ON 多表的连接条件(LEFT / RIGHT) JOIN2 ON 多表的连接条件2...WHERE 不包含聚合函数的过滤条件GROUP BY 分组字段1,分组字段2...HAVING 包含聚合函数的过滤条件ORDER BY 排序字段1,排序字段2...(ASC / DESC)LIMIT 偏移量,条目数

2、SQL语句的执行过程

我们就以SQL99语法结构为例进行分析

如有错误,欢迎指正!!!

来源地址:https://blog.csdn.net/Decade0712/article/details/129759317

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯