MySQL 聚合函数

MySQL 提供了各种聚合函数来执行或计算聚合值,例如查找最小值、最大值、总和等。通常,我们将聚合函数与 Group By 子句一起使用来查找每个组的聚合值。但是,您也可以在没有 Group By 子句的情况下使用它们。

MySQL 聚合函数

以下是可用的聚合函数列表。

聚合函数描述
AVG()它查找或返回平均值。
BIT_AND()返回按位与
BIT_OR()它返回按位或值。
BIT_XOR()返回按位异或值
COUNT()计算返回的行数。
COUNT(DISTINCT)它计算不同或唯一值的数量。
GROUP_CONCAT()返回连接的字符串
MAX()查找最大值
MIN()使用此聚合函数查找最小值。
STD()总体标准差
STDDEV()使用此 MySQL 方法获取总体标准差
STDDEV_POP()这返回总体标准差
STDDEV_SAMP()返回样本标准差
SUM()使用此函数返回或查找总和。
VAR_POP()此方法返回总体标准方差。
VAR_SAMP()它返回样本方差。
VARIANCE()此方法返回总体标准方差。

MySQL 聚合函数示例

为了演示这些聚合函数,我们将使用下面显示的数据,其中包含 15 条记录。

在此示例中,我们将在 Yearly Income 和 Sales 列上使用聚合函数 AVG、SUM、MIN 和 MAX。以下聚合查询计算客户表中 Yearly_Income 列和 Sales 列的总和、平均值、最小值和最大值。

SELECT   AVG(YearlyIncome),
         AVG(Sales),
         SUM(YearlyIncome),
         SUM(Sales),
         MIN(YearlyIncome),
         MIN(Sales),
         MAX(YearlyIncome),
         MAX(Sales)
 FROM customer;
Aggregate SUM, AVG, MIN, and MAX Functions 2

通常,我们将这些 MySQL 聚合函数与 Group By 子句一起使用,以按类别对项目进行分组。让我们看一个示例以更好地理解。

SELECT Occupation, 
       AVG(YearlyIncome),
       AVG(Sales),
       SUM(YearlyIncome),
       SUM(Sales),
       MIN(YearlyIncome),
       MIN(Sales),
       MAX(YearlyIncome),
       MAX(Sales)
 FROM customer
 GROUP BY Occupation;
MySQL Aggregate Functions 3

MySQL 聚合函数标准差示例

在此示例中,我们将在 Yearly Income 和 Sales 列上使用 STD、STDDEV、STDDEV_POP 和 STDDEV_SAMP 来查找这两列的标准差。

SELECT  STD(YearlyIncome),
        STDDEV(YearlyIncome),
        STDDEV_POP(YearlyIncome) AS STDDEV_POP_Income,
        STDDEV_SAMP(YearlyIncome) AS STDDEV_SAMP_Income,
        STD(Sales),
        STDDEV(Sales),
        STDDEV_POP(Sales),
        STDDEV_SAMP(Sales)
 FROM customer;
Standard Deviations STD, STDDEV, STDDEV_POP, and STRDDEV_SAMP 4

此示例与上述相同,但这次我们使用 Occupation 列对客户进行分组。接下来,我们使用上述方法查找标准差。

SELECT  Occupation,
        STD(YearlyIncome),
        STDDEV(YearlyIncome),
        STDDEV_POP(YearlyIncome) AS STDDEV_POP_Income,
        STDDEV_SAMP(YearlyIncome) AS STDDEV_SAMP_Income,
        STD(Sales),
        STDDEV(Sales),
        STDDEV_POP(Sales),
        STDDEV_SAMP(Sales)
 FROM customer
 GROUP BY Occupation;

MySQL 方差、var_pop、var_samp 示例

在此示例中,我们将在 Yearly Income 和 Sales 列上使用 MySQL 聚合函数,如 VARIANCE、VAR_POP 和 VAR_SAMP。它们查找这两列的标准方差。

SELECT  VAR_POP(YearlyIncome),
        VARIANCE(YearlyIncome),
        VAR_SAMP(YearlyIncome) ,
        VAR_POP(Sales),
        VARIANCE(Sales),
        VAR_SAMP(Sales)
 FROM customer;
Calculate VARIANCE Example 6

使用 Occupation 列对客户进行分组。接下来,我们使用前面提到的 VARIANCE 函数来查找每个组的标准方差。

SELECT  Occupation,
        VAR_POP(YearlyIncome),
        VARIANCE(YearlyIncome),
        VAR_SAMP(YearlyIncome) ,
        VAR_POP(Sales),
        VARIANCE(Sales),
        VAR_SAMP(Sales)
 FROM customer
 GROUP BY Occupation;
Aggregate VARIANCE, VAR_POP, and VAR_SAMP Functions 7

按位与、或和异或示例

我们在 Yearly Income 和 Sales 列上使用 BIT_AND、BIT_OR 和 BIT_XOR。

SELECT  BIT_AND(YearlyIncome),
        BIT_OR(YearlyIncome),
        BIT_XOR(YearlyIncome) ,
        BIT_AND(Sales),
        BIT_OR(Sales),
        BIT_XOR(Sales)
 FROM customer;
BIT_AND, BIT_OR, and BIT_XOR bitwise operations 8

在这里,我们使用 Group By 子句对客户表中的 Occupation 列进行分组。接下来,我们使用了上述聚合函数。

SELECT  Occupation,
        BIT_AND(YearlyIncome),
        BIT_OR(YearlyIncome),
        BIT_XOR(YearlyIncome) ,
        BIT_AND(Sales),
        BIT_OR(Sales),
        BIT_XOR(Sales)
 FROM customer
 GROUP BY Occupation;
Bitwise and, or, xor example 9

此示例向您展示了 MySQL COUNT 和 COUNT(DISTINCT) 函数的示例。在这里,我们在这两个方法上都使用了 First name 列。如您所见,COUNT(DISTINCT) 函数返回此列中不同或唯一记录的计数。

SELECT  COUNT(*),
        COUNT(FirstName),
        COUNT(DISTINCT FirstName)
 FROM customer
Aggregate Functions 10