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]

多个列
我们也可以在多个列中使用它。在此 Max 函数示例中,我们正在查找最大销售额和年收入。
SELECT MAX([YearlyIncome]) AS [Maximum Income] ,MAX(Sales) AS [Maximum Sale] FROM [Customer]

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 每个教育组中客户的最大收入和销售额。

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

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 子查询
此 Max 聚合函数允许您在 WHERE 子句 中的 子查询 中使用它来查找最大值。它返回 [Yearly Income] 等于最大收入的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [YearlyIncome] = (SELECT MAX([YearlyIncome])
FROM Customer)
从第一个示例中可以看出,最高收入是 125000。因此,上面的查询将显示年收入等于 125000 的客户。
