MySQL聚合函数
简介:在本教程中,您将学习MySQL聚合函数,包括AVG COUNT,SUM,MAX和MIN。
MySQL聚合函数简介
聚合函数对多个值执行计算并返回单个值。
例如,您可以使用AVG()聚合函数,该函数采用多个数字并返回数字的平均值。
下面说明了聚合函数的语法:
function_name(DISTINCT | ALL expression)
使用以下语法:
首先,指定集合函数的名称,例如AVG()。
请参阅以下部分中的聚合函数列表。其次,如果要基于不同的值进行计算,请使用DISTINCT;如果要计算包括重复项在内的所有值,请使用ALL。
默认为ALL。第三,指定可以是列的表达式,也可以是涉及列和算术运算符的表达式。
聚合函数通常与GROUP BY子句一起使用,以计算每个组的聚合值,例如,按组的平均值或每个组中值的总和。
下图说明了SUM()聚合函数与GROUP BY子句结合使用:
MySQL支持以下聚合函数:
Aggregate function | Description |
---|---|
AVG() | Return the average of non-NULL values. |
BIT_AND() | Return bitwise AND. |
BIT_OR() | Return bitwise OR. |
BIT_XOR() | Return bitwise XOR. |
COUNT() | Return the number of rows in a group, including rows with NULL values. |
GROUP_CONCAT() | Return a concatenated string. |
JSON_ARRAYAGG() | Return result set as a single JSON array. |
JSON_OBJECTAGG() | Return result set as a single JSON object. |
MAX() | Return the highest value (maximum) in a set of non-NULL values. |
MIN() | Return the lowest value (minimum) in a set of non-NULL values. |
STDEV() | Return the population standard deviation. |
STDDEV_POP() | Return the population standard deviation. |
STDDEV_SAMP() | Return the sample standard deviation. |
SUM() | Return the summation of all non-NULL values a set. |
VAR_POP() | Return the population standard variance. |
VARP_SAM() | Return the sample variance. |
VARIANCE() | Return the population standard variance. |
MySQL聚合函数示例
我们将使用示例数据库中的product和orderdetails表进行演示:
MySQL聚合函数– AVG()函数示例
AVG()函数计算一组值的平均值。
它在计算中忽略NULL。
AVG(expression)
例如,您可以使用AVG函数通过使用以下查询来计算产品表中所有产品的平均购买价格:
SELECT AVG(buyPrice) average_buy_price FROM products;
下面的示例使用AVG()函数来计算每个产品系列的平均购买价格:
SELECT productLine, AVG(buyPrice) FROM products GROUP BY productLine ORDER BY productLine;
MySQL聚合函数– COUNT()函数示例
COUNT()函数返回集合中值的编号。
例如,您可以使用COUNT()函数来获取产品表中的产品数量,如以下查询所示:
SELECT COUNT(*) AS total FROM products;
以下语句将COUNT()函数与GROUP BY子句一起使用,以获取每个产品系列的产品数量:
SELECT productLine, COUNT(*) FROM products GROUP BY productLine ORDER BY productLine;
MySQL聚合函数– SUM()函数示例
SUM()函数返回一组值的总和。
SUM()函数将忽略NULL。
如果找不到匹配的行,则SUM()函数将返回NULL。
要获取每个产品的总订单价值,可以将SUM()函数与GROUP BY子句结合使用,如下所示:
SELECT productCode, SUM(priceEach * quantityOrdered) total FROM orderDetails GROUP BY productCode ORDER BY total DESC;
要更详细地查看结果,可以将orderdetails表连接到products表,如以下查询所示:
SELECT productCode, productName, SUM(priceEach * quantityOrdered) total FROM orderDetails INNER JOIN products USING (productCode) GROUP BY productCode ORDER BY total;
MySQL聚合函数– MAX()函数示例
MAX()函数返回一组中的最大值。
MAX(expression)
例如,您可以使用MAX()函数从产品表中获得最高购买价,如以下查询所示:
SELECT MAX(buyPrice) highest_price FROM products;
以下语句将MAX()函数与GROUP BY子句结合使用,以获取每条产品线的最高价格:
SELECT productLine, MAX(buyPrice) FROM products GROUP BY productLine ORDER BY MAX(buyPrice) DESC;
MySQL聚合函数– MIN()函数示例
MIN()函数返回一组值中的最小值。
MIN(expression)
例如,以下查询使用MIN()函数从产品表中查找最低价格:
SELECT MIN(buyPrice) lowest_price FROM products;
下面的示例将MIN()函数与GROUP BY子句一起使用,以获取每条产品线的最低价格:
SELECT productLine, MIN(buyPrice) FROM products GROUP BY productLine ORDER BY MIN(buyPrice);
MySQL聚合函数– GROUP_CONCAT()函数示例
GROUP_CONCAT()连接一组字符串并返回连接的字符串。
请参阅以下员工和客户表:
以下语句使用GROUP_CONCAT()函数返回销售人员和每个销售人员负责的客户列表:
SELECT firstName, lastName, GROUP_CONCAT( DISTINCT customername ORDER BY customerName) customers FROM employees INNER JOIN customers ON customers.salesRepEmployeeNumber = employeeNumber GROUP BY employeeNumber ORDER BY firstName , lastname;
在本教程中,您学习了如何使用最常用的MySQL聚合函数。