适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 中的 SQL 数据库
返回组中指定表达式的所有值的最大值。 可以后跟 OVER 子句。
注释
若要获取内联多个表达式的所有值的最大数目,请参阅 逻辑函数 - GREATEST。
语法
聚合函数语法:
MAX ( [ ALL | DISTINCT ] expression )
分析函数语法:
MAX ( [ ALL ] expression) OVER ( [ <partition_by_clause> ] [ <order_by_clause> ] )
参数
全部
向所有值应用此聚合函数。
ALL 是默认值。
DISTINCT
指定考虑每一个唯一值。
DISTINCT 对 ISO 兼容性没有意义 MAX,并且仅适用于 ISO 兼容性。
expression
常量、列名或函数,以及算术、按位和字符串运算符的任意组合。
MAX 可以与 数字、 char、 nchar、 varchar、 nvarchar、 uniqueidentifier 或 datetime 列一起使用,但不能与 位 列一起使用。 不允许聚合函数和子查询。
有关详细信息,请参阅表达式。
OVER ([ partition_by_clause ] [ order_by_clause ] )
partition_by_clause 将子句生成的 FROM 结果集划分为应用函数的分区。 如果未指定,则此函数将查询结果集的所有行视为单个组。
order_by_clause 确定执行操作的逻辑顺序。
有关详细信息,请参阅 SELECT - OVER 子句。
返回类型
返回与 expression 相同的值。
注解
MAX 忽略任何 null 值。
MAX
NULL当没有要选择的行时返回。
对于字符列, MAX 查找排序序列中的最大值。
MAX 在不使用 and OVERORDER BY 子句的情况下使用时,是确定性函数。 使用 and OVER 子句指定ORDER BY时,这是不确定的。 有关详细信息,请参阅 “确定性”和“不确定”函数。
MAX 对一组行进行作。 若要获取一组内联值的最大值,请参阅 逻辑函数 - GREATEST。
示例
本文中的代码示例使用 AdventureWorks2025 或 AdventureWorksDW2025 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。
A. 基本示例
以下示例返回最高(最大)税率。
SELECT MAX(TaxRate)
FROM Sales.SalesTaxRate;
GO
结果集如下。
-------------------
19.60
Warning, null value eliminated from aggregate.
B. 使用 OVER 子句
以下示例使用子句的MIN函数MAXAVGCOUNT为表中每个部门OVER提供聚合值。HumanResources.Department
SELECT DISTINCT Name,
MIN(Rate) OVER (PARTITION BY edh.DepartmentID) AS MinSalary,
MAX(Rate) OVER (PARTITION BY edh.DepartmentID) AS MaxSalary,
AVG(Rate) OVER (PARTITION BY edh.DepartmentID) AS AvgSalary,
COUNT(edh.BusinessEntityID) OVER (PARTITION BY edh.DepartmentID) AS EmployeesPerDept
FROM HumanResources.EmployeePayHistory AS eph
INNER JOIN HumanResources.EmployeeDepartmentHistory AS edh
ON eph.BusinessEntityID = edh.BusinessEntityID
INNER JOIN HumanResources.Department AS d
ON d.DepartmentID = edh.DepartmentID
WHERE edh.EndDate IS NULL
ORDER BY Name;
结果集如下。
Name MinSalary MaxSalary AvgSalary EmployeesPerDept
----------------------------- --------------------- --------------------- --------------------- ----------------
Document Control 10.25 17.7885 14.3884 5
Engineering 32.6923 63.4615 40.1442 6
Executive 39.06 125.50 68.3034 4
Facilities and Maintenance 9.25 24.0385 13.0316 7
Finance 13.4615 43.2692 23.935 10
Human Resources 13.9423 27.1394 18.0248 6
Information Services 27.4038 50.4808 34.1586 10
Marketing 13.4615 37.50 18.4318 11
Production 6.50 84.1346 13.5537 195
Production Control 8.62 24.5192 16.7746 8
Purchasing 9.86 30.00 18.0202 14
Quality Assurance 10.5769 28.8462 15.4647 6
Research and Development 40.8654 50.4808 43.6731 4
Sales 23.0769 72.1154 29.9719 18
Shipping and Receiving 9.00 19.2308 10.8718 6
Tool Design 8.62 29.8462 23.5054 6
°C 将 MAX 与字符数据配合使用
以下示例返回按字母顺序对数据库名称进行排序的数据库名称。 该示例使用 WHERE database_id < 5,选择系统数据库。
SELECT MAX(name)
FROM sys.databases
WHERE database_id < 5;
最后一个系统数据库为 tempdb。