SQL MAX 函数

SQL Server MAX 聚合函数用于查找 SELECT 语句选定的所有行或记录中的最大值,其语法是:

SELECT MAX ([Column_Name])
FROM [Source]

MAX 函数在查找最大值时会忽略 NULL 值。为了演示,请使用以下数据。

SQL Server MAX 函数示例

Max 函数返回指定列中所有记录的最大值。例如,以下查询将查找 Customers 表中 [Yearly Income] 列的最大收入。

SELECT MAX([YearlyIncome]) AS [Maximum Income]
FROM [Customer]
SQL Server MAX Function Using on a Single Column

多个列

我们也可以在多个列中使用它。在此 Max 函数示例中,我们正在查找最大销售额和年收入。

SELECT MAX([YearlyIncome]) AS [Maximum Income]
 ,MAX(Sales) AS [Maximum Sale]
FROM [Customer]
Finding for Multiple Columns

SQL MAX 函数 GROUP BY 子句

我们通常会检查属于特定类别或颜色的最大产品价格(最高定价产品)。在这些情况下,我们使用 GROUP BY 子句按颜色或类别对产品进行分组,然后使用此函数查找每个组中最高定价的产品。让我们看一下 MAX Group By 子句函数示例。

SELECT Education
 ,MAX([YearlyIncome]) AS [Maximum Income]
 ,MAX(Sales) AS [Maximum Sale]
FROM [Customer]
GROUP BY Education

上面的 聚合函数 查询按教育资格对客户进行分组。然后 SELECT 每个教育组中客户的最大收入和销售额。

Max Group By Function 4

SQL MAX 函数 ORDER BY 子句

您可以在 Order By 子句 中使用它。下面的查询将按教育对最高年收入和销售额进行分组。接下来,Order By 子句将根据最大年收入降序对这些查询结果进行排序。

SELECT Education
 ,MAX([YearlyIncome]) AS [Maximum Income]
 ,MAX(Sales) AS [Maximum Sale]
FROM [Customer]
GROUP BY Education
ORDER BY MAX([YearlyIncome]) DESC

WHERE 子句中的 MAX 函数

您也可以将其与 WHERE 子句一起使用。在此示例中,我们使用 where 子句显示销售额大于 1000 的记录。

SELECT Education
 ,MAX([YearlyIncome]) AS [Maximum Income]
 ,MAX(Sales) AS [Maximum Sale]
FROM [Customer]
WHERE Sales > 1000
GROUP BY Education
ORDER BY MAX([YearlyIncome]) DESC
Max Function with Where and Order By Clause 6

SQL Server MAX 函数在 HAVING 子句中的应用

当我们将数据分组时,有时我们会检查聚合数据的条件。在这种情况下,我们将 HAVING 子句Group By 语句一起使用。

例如,以下查询将按教育和职业对客户进行分组。然后查找每个类别中存在的最高年收入和销售额。

SELECT Education
 ,Occupation
 ,MAX([YearlyIncome]) AS [Maximum Income]
 ,MAX(Sales) AS [Maximum Sale]
FROM [Customer]
GROUP BY Education, Occupation 
HAVING MAX([YearlyIncome]) > 60000 

查询的最后一行检查每个组的最高年收入是否高于 60000。如果为真,则显示相应的记录。

HAVING MAX ([YearlyIncome]) > 60000
Max Function Group By Having 7

MAX 子查询

此 Max 聚合函数允许您在 WHERE 子句 中的 子查询 中使用它来查找最大值。它返回 [Yearly Income] 等于最大收入的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [YearlyIncome] = (SELECT MAX([YearlyIncome])
 FROM Customer)

从第一个示例中可以看出,最高收入是 125000。因此,上面的查询将显示年收入等于 125000 的客户。

Max subquery Function 8