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聚合函数。

