一文搞定MySQL聚合函数
一般情况下,我们需要的聚合数据(总和,平均数,最大最小值等)并不总是存储在表中。 但可以通过执行存储数据的计算来获取它。
例如,由于orderDetails表仅存储每个项目的数量和价格,无法通过从orderdetails表直接查询获得每个订单的总金额。必须为每个订单查询项目的数量和价格,并计算订单的总额。
要在查询中执行此类计算,就要使用聚合函数了。
聚合函数对一组值执行计算并返回单个值。
MySQL提供了许多聚合函数,包括AVG,COUNT,SUM,MIN,MAX等。
除COUNT函数外,其它聚合函数在执行计算时会忽略NULL值。
AVG
计算一组值的平均值。
AVG(expression)
可以使用AVG()函数通过使用以下查询来计算products表中所有产品的平均价格:
mysql> SELECT AVG(buyPrice) average_buy_price
FROM products;
+-------------------+
| average_buy_price |
+-------------------+
| 54.395182 |
+-------------------+
1 row in set
COUNT
返回表中的行数。
比如获取products表中的产品数量:
mysql> SELECT COUNT(*) AS Total
FROM products;
+-------+
| Total |
+-------+
| 110 |
+-------+
1 row in set
COUNT()函数有几个表单,如COUNT(*)和COUNT(DISTINCT expression)
SUM()
返回一组值的总和。如果找不到匹配行,则SUM()函数返回NULL值。
比如获得每个产品的总销售量,搭配GROUP BY:
mysql> SELECT productCode,sum(priceEach * quantityOrdered) total
FROM orderdetails
GROUP by productCode;
+-------------+-----------+
| productCode | total |
+-------------+-----------+
| S10_1678 | 90157.77 |
| S700_3505 | 84992.25 |
****** 此处省略了一大波数据 ********
| S700_3962 | 78919.06 |
| S700_4002 | 71753.93 |
| S72_1253 | 42692.53 |
| S72_3212 | 47550.40 |
+-------------+-----------+
109 rows in set
要更详细地查看结果,可以将orderdetails表连接到products表中:
SELECT P.productCode,P.productName,SUM(priceEach * quantityOrdered) total
FROM orderdetails O
INNER JOIN products P ON O.productCode = P.productCode
GROUP by productCode
ORDER BY total;
SQL
执行上面查询语句,得到以下结果 -
mysql> SELECT P.productCode,P.productName,SUM(priceEach * quantityOrdered) total
FROM orderdetails O
INNER JOIN products P ON O.productCode = P.productCode
GROUP by productCode
ORDER BY total;
+-------------+---------------------------------------------+-----------+
| productCode | productName | total |
+-------------+---------------------------------------------+-----------+
| S24_1937 | 1939 Chevrolet Deluxe Coupe | 28052.94 |
| S24_3969 | 1936 Mercedes Benz 500k Roadster | 29763.39 |
| S24_2972 | 1982 Lamborghini Diablo | 30972.87 |
| S24_2840 | 1958 Chevy Corvette Limited Edition | 31627.96 |
****** 此处省略了一大波数据 ************************************************
| S12_3891 | 1969 Ford Falcon | 152543.02 |
| S12_1099 | 1968 Ford Mustang | 161531.48 |
| S10_4698 | 2003 Harley-Davidson Eagle Drag Bike | 170686.00 |
| S10_1949 | 1952 Alpine Renault 1300 | 190017.96 |
| S12_1108 | 2001 Ferrari Enzo | 190755.86 |
| S18_3232 | 1992 Ferrari 360 Spider red | 276839.98 |
+-------------+---------------------------------------------+-----------+
109 rows in set
MAX()
返回一组值中的最大值。
MAX(expression)
例如,获取products表中最昂贵的产品
mysql> SELECT MAX(buyPrice) highest_price FROM products;
+---------------+
| highest_price |
+---------------+
| 103.42 |
+---------------+
1 row in set
MIN()
返回一组值中的最小值
MIN(expression)
比如在products表查找最低价格产品:
mysql> SELECT MIN(buyPrice) lowest_price FROM Products;
+--------------+
| lowest_price |
+--------------+
| 15.91 |
+--------------+
1 row in set
一文搞定MySQL聚合函数相关推荐
- 一文搞定MySQL性能调优
公众号回复关键词获取免费学习资料,加入前后端技术交流群和副业群.新建立的副业Q群:735764906. 数据库的操作越来越成为整个应用的性能瓶颈,这对于Web应用尤其明显.关于数据库的性能,这并不只是 ...
- 一文搞定Mysql日期时间函数
总第184篇/张俊红 日期和时间函数部分也是我们日常工作中使用频率比较高的一部分.这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异.大家掌握一个数据库 ...
- sql中当前日期加2个月_一文搞定Mysql日期时间函数
总第184篇/张俊红 日期和时间函数部分也是我们日常工作中使用频率比较高的一部分.这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异.大家掌握一个数据库 ...
- 一文搞定Python中的时间转化
一文搞定Python中的时间转化 在生活和工作中,我们每个人每天都在和时间打交道: 早上什么时候起床? 地铁几分钟来一趟? 中午什么时候开始午休? 明天是星期几? 距离上次买衣服已经2个月呢? 领导让 ...
- php带参数单元测试_一文搞定单元测试核心概念
基础概念 单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类.单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被 ...
- 【Python基础】一文搞定pandas的数据合并
作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...
- mysql 聚合函数内比较运算符_关于常用 MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结...
/* 关于MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结,*/ -- 1 运算符优先级 /* 12.1.1. 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符 ...
- 一文搞定Matplotlib 各个示例丨建议收藏
摘要:Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用 ,Matplotlib也是深度学习的常用绘图库,主要是将训练的成果进行图形化,因为这样更直观,更方便发现训练中的 ...
- 一文搞定pandas的数据合并
作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...
最新文章
- python画三维几何图-Python下opencv使用笔记(二)(简单几何图像绘制)
- RabbitMq--3--案例
- 分享一个简单程序(webApi+castle+Automapper+Ef+angular)
- 我回答的一个粉丝关于用编程语言模拟SAP事务的问题
- 前端学习(3157):react-hello-react之一个简单的helloworld
- (16)FPGA面试题MOORE 与 MEELEY状态机
- 时间进度表html,网页的设计进度表.doc
- Xcode中打印显示Unicode的解决办法
- 使用格式工厂将H264文件转成mp4文件
- Linux 下rzsz最新安装方法
- coji 编程机器人_娃喜欢就行—“编程机器人”COJI
- Incapsula 反爬虫
- jdk8中新增的日期处理类LocalDate,LocalTime,LocalDateTime,ZoneId,ZonedDateTime详解
- 这些数据合并的神操作,你掌握几个?
- java:从左至右显示“12345678”,接着显示“23456781”,在接着显示“34567812”,一直到“81234567”, 然后返回“12345678”
- 代码审计:任意文件包含(php4.81版本)
- Java实现21点多人游戏(期末作业)
- 指示灯循环控制C语言代码,指示灯循环控制.doc
- 通用的ARGOX条码打印软件
- Android中复制到剪切板