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;

通常,我们将这些 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 聚合函数标准差示例
在此示例中,我们将在 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;

此示例与上述相同,但这次我们使用 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;

使用 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;

按位与、或和异或示例
我们在 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;

在这里,我们使用 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;

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