MySQL聚合函数

时间:2019-11-20 08:52:16  来源:igfitidea点击:

简介:在本教程中,您将学习MySQL聚合函数,包括AVG COUNT,SUM,MAX和MIN。

MySQL聚合函数简介

聚合函数对多个值执行计算并返回单个值。

例如,您可以使用AVG()聚合函数,该函数采用多个数字并返回数字的平均值。

下面说明了聚合函数的语法:

function_name(DISTINCT | ALL expression)

使用以下语法:

  • 首先,指定集合函数的名称,例如AVG()。
    请参阅以下部分中的聚合函数列表。

  • 其次,如果要基于不同的值进行计算,请使用DISTINCT;如果要计算包括重复项在内的所有值,请使用ALL。
    默认为ALL。

  • 第三,指定可以是列的表达式,也可以是涉及列和算术运算符的表达式。

聚合函数通常与GROUP BY子句一起使用,以计算每个组的聚合值,例如,按组的平均值或每个组中值的总和。

下图说明了SUM()聚合函数与GROUP BY子句结合使用:

MySQL支持以下聚合函数:

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