MySQL聚合函数查询

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客

《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

有时候并不需要返回表中的实际数据,而需要对数据进行总结。MySQL提供了一些聚合函数,可以对获取的数据进行分析和报告。这些函数的功能包括计算数据表中记录行数的总数、计算某个字段列下数据的总和,以及计算表中某个字段下的最大值、最小值或者平均值。这些聚合函数的名称和作用如表5.2所示。

5.3.1  COUNT()函数

COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。其使用方法有两种:

  • COUNT(*) :计算表中的总行数,而不管某列是否有数值或者是否为NULL。
  • COUNT(字段名):计算指定列下的总行数,计算时将忽略NULL的行。

【例5.34】查询表customers中的总行数,SQL语句如下:

mysql> SELECT COUNT(*) AS cust_num FROM customers;
+----------+
| cust_num |
+----------+
|        4   |
+----------+

由查询结果可以看到,COUNT(*)返回表customers中记录的总行数,而不管其值是什么,返回的总数的名称为cust_num。

【例5.35】查询表customers中有电子邮箱的顾客的总数,SQL语句如下:

mysql> SELECT COUNT(c_email) AS email_num  FROM customers;
+-----------+
| email_num |
+-----------+
|         3   |
+-----------+

由查询结果可以看到,只有3个顾客有email,email为NULL的记录没有被COUNT()函数  计算。

前面介绍分组查询的时候,介绍了如何用COUNT()函数与GROUP BY关键字一起来计算不同分组中的记录总数。下面再来看一个例子。

【例5.36】在表orderitems中,使用COUNT()函数统计不同订单号中订购的水果种类,SQL语句如下:

mysql> SELECT o_num, COUNT(f_id) FROM orderitems GROUP BY o_num;
+-------+-------------+
| o_num | COUNT(f_id) |
+-------+-------------+
| 30001 |           4   |
| 30002 |           1   |
| 30003 |           1   |
| 30004 |           1   |
| 30005 |           4   |
+-------+-------------+

从查询结果中可以看到,GROUP BY关键字先按照订单号进行分组,然后计算每个分组中的总记录数。

5.3.2  SUM()函数

SUM()是一个求和函数,返回指定列值的总和。

【例5.37】在表orderitems中,查询30005号订单一共购买的水果的总量,SQL语句如下:

mysql>SELECT SUM(quantity) AS items_total FROM orderitems WHERE o_num = 30005;
+-------------+
| items_total |
+-------------+
|     30        |
+-------------+

SUM(quantity)函数返回订单中所有水果数量之和,WHERE子句指定查询的订单号为30005。

SUM()可以与GROUP BY一起使用,来计算每个分组的总和。

【例5.38】在表orderitems中,使用SUM()函数统计不同订单号中订购的水果的总量,SQL语句如下:

mysql> SELECT o_num, SUM(quantity) AS items_total FROM orderitems GROUP BY o_num;
+-------+-------------+
| o_num | items_total |
+-------+-------------+
| 30001 |          33   |
| 30002 |           2   |
| 30003 |         100   |
| 30004 |          50   |
| 30005 |          30   |
+-------+-------------+

由查询结果可以看到,GROUP BY按照订单号o_num进行分组,SUM()函数计算每个分组中订购的水果的总量。

5.3.3  AVG()函数

AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。

【例5.39】在表fruits中,查询s_id=103的水果供应商的水果价格平均值,SQL语句如下:

mysql> SELECT AVG(f_price) AS avg_price FROM fruits WHERE s_id = 103;
+-----------+
| avg_price |
+-----------+
|  5.700000 |
+-----------+

本例中,查询语句增加了一个WHERE子句,并且添加了查询过滤条件,只查询s_id = 103的记录中的f_price。因此,通过AVG()函数计算的结果只是指定的供应商水果的价格平均值,而不是市场上所有水果价格的平均值。

AVG()可以与GROUP BY一起使用,来计算每个分组的平均值。

【例5.40】在表fruits中,查询每一个水果供应商的水果价格的平均值,SQL语句如下:

mysql> SELECT s_id,AVG(f_price) AS avg_price FROM fruits GROUP BY s_id;
+------+-----------+
| s_id | avg_price |
+------+-----------+
|  101 |  6.200000  |
|  103 |  5.700000  |
|  104 |  7.000000  |
|  107 |  3.600000  |
|  102 |  8.933333  |
|  105 |  7.466667  |
|  106 | 15.700000  |
+------+-----------+

GROUP BY关键字根据s_id字段对记录进行分组,然后计算出每个分组的平均值。这种分组求平均值的方法非常有用,例如,求不同班级学生成绩的平均值、求不同部门员工的平均工资、求各地的年平均气温等。

5.3.4  MAX()函数

MAX()返回指定列中的最大值。

【例5.41】在表fruits中,查找市场上水果价格的最高值,SQL语句如下:

mysql>SELECT MAX(f_price) AS max_price FROM fruits;
+------------+
| max_price  |
+------------+
|   15.70     |
+------------+

由结果可以看到,MAX()函数查询出f_price字段的最大值为15.70。

MAX()也可以和GROUP BY关键字一起使用,来计算每个分组中的最大值。

【例5.42】在表fruits中,查找不同水果供应商提供的水果的最高价格,SQL语句如下:

mysql> SELECT s_id, MAX(f_price) AS max_price FROM fruits GROUP BY s_id;
+------+-----------+
| s_id | max_price |
+------+-----------+
|  101 |     10.20  |
|  103 |      9.20  |
|  104 |      7.60  |
|  107 |      3.60  |
|  102 |     11.20  |
|  105 |     11.60  |
|  106 |     15.70  |
+------+-----------+

由结果可以看到,GROUP BY关键字根据s_id字段对记录进行分组,然后计算出每个分组中的最大值。

MAX()函数不仅适用于数值类型,也可用于字符类型。

【例5.43】在表fruits中查找f_name的最大值,SQL语句如下:

mysql> SELECT MAX(f_name) FROM fruits;
+-------------+
| MAX(f_name) |
+-------------+
| xxxx          |
+-------------+

由结果可以看到,MAX()函数可以对字母进行大小判断,并返回最大的字符或者字符串。

5.3.5  MIN()函数

MIN()返回指定列中的最小值。

【例5.44】在表fruits中,查找市场上水果价格的最低值,SQL语句如下:

mysql>SELECT MIN(f_price) AS min_price FROM fruits;
+-----------+
| min_price |
+-----------+
|   2.20     |
+-----------+

由结果可以看到,MIN()函数查询出f_price字段的最小值为2.20。

MIN()也可以和GROUP BY关键字一起使用,用来计算每个分组中的最小值。

【例5.45】在表fruits中,查找不同水果供应商提供的水果的最低价格,SQL语句如下:

mysql> SELECT s_id, MIN(f_price) AS min_price  FROM fruits GROUP BY s_id;
+------+-----------+
| s_id | min_price |
+------+-----------+
|  101 |      3.20   |
|  103 |      2.20   |
|  104 |      6.40   |
|  107 |      3.60   |
|  102 |      5.30   |
|  105 |      2.60   |
|  106 |     15.70   |
+------+-----------+

由结果可以看到,GROUP BY关键字根据s_id字段对记录进行分组,然后计算出每个分组中的最小值。MIN()函数与MAX()函数类似,不仅适用于数值类型,也可用于字符类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35126.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3 完结

组合式API - setup选项 组合式API可理解为一系列函数,通常需要调用这些函数去编写将来的组件逻辑; 而setup为组合式API的入口(只有先写了setup才能往里写组合式API的函数) setup选项的写法及执行时机 执行时机在beforeCreate之前…

简洁的移动端登录注册界面

非常简洁的登录、注册界面模板&#xff0c;使用uni-app编写&#xff0c;直接复制粘贴即可&#xff0c;无任何引用&#xff0c;全部公开。 废话不多说&#xff0c;代码如下&#xff1a; login.vue文件 <template><view class"content"><view class&quo…

2024NIPS | 在目标引导下利用强化学习范式进行图像冲印调优

文章标题&#xff1a;Goal Conditioned Reinforcement Learning for Photo Finishing Tuning 原文链接&#xff1a;RLPixTuner 本文是上海AI Lab联合香港中文大学&#xff08;薛天帆等人&#xff09;发表在2024NIPS上的论文。 1. Abstract 图像冲印调优旨在自动化对图像冲印管…

【Spring】Cookie与Session

一、Cookie是什么&#xff1f; Cookie的存在主要是为了解决HTTP协议的无状态性问题&#xff0c;即协议本身无法记住用户之前的操作。 “状态” 的含义指的是: 默认情况下 HTTP 协议的客端和服务器之间的这次通信&#xff0c;和下次通信之间没有直接的联系 但是实际开发中&…

【最新】linux安装docker并配置加速源

我这边之前本地创建了个虚拟机&#xff0c;linux系统的&#xff0c;用于部署服务器。有时安装一些常用工具或者中间件&#xff0c;还是用docker安装方便&#xff0c;而且docker还有编排服务等功能&#xff0c;实际使用中还是会省不少事的&#xff0c;这里记录下安装docker的过程…

SpringBoot动态配置Nacos

重要知识点 Nacos属性的简单使用将SpringBoot中的所有配置全部放入到Nacos中开发人创建单独的命名空间,修改互不影响Nacos经常变动的配置抽离到外部文件中 将项目中的所有配置全部放到到 1. 首先引入包 <!-- nacos 接入--><!-- https://mvnrepository.com/artifact…

【每天一篇深度学习论文】轻量化自适应提取模块LAE

目录 论文介绍题目&#xff1a;论文地址&#xff1a; 创新点方法模型总体架构核心模块描述1. 轻量级自适应提取&#xff08;LAE&#xff09;模块&#xff1a;2. 多路径旁路特征匹配&#xff08;MSFM&#xff09;模块&#xff1a;3. RFABlock&#xff08;感受野注意力卷积&#…

Linux中文件操作

文件由文件内容和文件属性构成&#xff0c;因此对文件的操作就是对文件内容或文件属性的操作。所谓的“打开一个文件”就是将文件的属性或内容加载到内存中&#xff0c;而没有被打开的文件存在于磁盘上。打开的文件称作“内存文件”&#xff0c;未被打开的文件称作“磁盘文件”…

hhdb数据库介绍(10-42)

安全 SQL防火墙 管理平台提供的SQL防火墙功能可为用户拦截高危SQL、误操作SQL等&#xff0c;提升系统安全性。 同时防火墙提供观测功能&#xff0c;可在开启新规则前&#xff0c;通过开启观测状态&#xff0c;判断新规则对业务的影响程度。开启观测状态后&#xff0c;计算节…

白嫖VMware ESXi 8.0 U3新功能Live Patch、无需重启零中断修复漏洞

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01;“ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

JavaSE学习心得(API与算法篇)

常用API和常见算法 前言 常用API Math System Runtime Object ​编辑浅克隆 深克隆 Objects Biginteger 构造方法 成员方法 底层存储方式 Bigdecimal 构造方法 Bigdecimal的使用 底层存储方式 ​编辑正则表达式 两个判断练习 两个爬取练习 贪婪爬取和非贪…

如何开发高效的企业内训APP?教育培训系统源码搭建实战详解

本篇文章&#xff0c;小编将从教育培训系统的源码搭建、功能设计以及技术实现等方面&#xff0c;详细探讨如何开发一款高效的企业内训APP。 一、企业内训APP的需求分析 在开发企业内训APP之前&#xff0c;首先需要明确其基本需求。一个高效的企业内训APP应该具备以下几个核心…

解释器模式的理解和实践

引言 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它在软件工程中用得相对较少&#xff0c;但在某些特定场景下非常有用。解释器模式提供了一种解释语言的语法或表达式的方式&#xff0c;它定义了一个表达式接口&#xff0c;并通过…

Z029 PHP+MYSQL+LW+饭店预订管理系统的设计与实现 源代码 配置 文档

饭店预订管理系统 1.项目描述2. 开发背景与意义3.项目功能结构4.界面展示5.源码获取 1.项目描述 近几年来&#xff0c;我国计算机信息技术发展迅速&#xff0c;各种各样的信息管理系统层出不穷。互联网电子商务的热潮&#xff0c;改变了人们生活习惯&#xff0c;而作为城市经济…

【力扣热题100】—— Day5.回文链表

正视自己的懦弱和无能&#xff0c;克服自己的嫉妒与不甘 —— 24.12.3 234. 回文链表 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a…

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据&#xff1f; 1.1大数据的类型 1.2大数据的来源 1.3大数据处理的挑战 1.4大数据的核心技术 2.大数据有什么用&#xff1f; 2.1商业与营销&#xff1a; 2.2医疗与健康&#xff1a; 2.3金融服务&#xff1a; 2.4政府与公共服务&#xff1a; 2.5交通…

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境&#xff08;HBase分布式数据库&#xff09;的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro&#xff0c;点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型&#xff08;推荐&#xff09;”1…

ssh连接工具

我们未来接触到的linux系统一般情况下是没有界面&#xff08;桌面环境&#xff09;&#xff0c;我们一般会在自己工作的电脑上&#xff0c;通过相关ssh工具&#xff0c;利用网络连接到远程的你的服务器上。连接工具有很多&#xff1a;mobaxterm、xshell/xftp、putty等等 mobaxt…

苹果 ATS 配置SSL证书

Apple的App Transport Security (ATS) 是一项安全机制&#xff0c;旨在确保iOS和macOS应用的网络通信使用HTTPS加密。自iOS 9和OS X 10.11以来&#xff0c;默认情况下所有网络请求都必须使用HTTPS&#xff0c;除非明确允许非HTTPS连接。 在2017年1月1日之前&#xff0c;开发者可…