适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 中的 SQL 数据库
返回组中指定表达式的所有值的最小值。 可以后跟 OVER 子句。
注释
若要获取多个表达式内联的所有值的最小值,请参阅 逻辑函数 - LEAST。
语法
聚合函数语法:
MIN ( [ ALL | DISTINCT ] expression )
分析函数语法:
MIN ( [ ALL ] expression ) OVER ( [ <partition_by_clause> ] [ <order_by_clause> ] )
参数
全部
向所有值应用此聚合函数。
ALL 是默认值。
DISTINCT
指定考虑每一个唯一值。
DISTINCT 对 ISO 兼容性没有意义 MIN,并且仅适用于 ISO 兼容性。
expression
常量、列名或函数,以及算术、按位和字符串运算符的任意组合。
MIN 可以与 数字、 char、 nchar、 varchar、 nvarchar、 uniqueidentifier 或 datetime 列一起使用,但不能与 位 列一起使用。 不允许聚合函数和子查询。
有关详细信息,请参阅表达式。
OVER ([ partition_by_clause ] [ order_by_clause ] )
partition_by_clause 将子句生成的 FROM 结果集划分为应用函数的分区。 如果未指定,则此函数将查询结果集的所有行视为单个组。
order_by_clause 确定执行操作的逻辑顺序。
有关详细信息,请参阅 SELECT - OVER 子句。
返回类型
返回与 expression 相同的值。
注解
MIN 忽略任何 null 值。
使用字符数据列时, MIN 查找排序序列中的最小值。
MIN 在不使用 and OVERORDER BY 子句的情况下使用时,是确定性函数。 使用 and OVER 子句指定ORDER BY时,这是不确定的。 有关详细信息,请参阅 “确定性”和“不确定”函数。
MIN 对一组行进行作。 若要获取一组内联值的最小值,请参阅 逻辑函数 - LEAST。
示例
本文中的代码示例使用 AdventureWorks2025 或 AdventureWorksDW2025 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。
A. 基本示例
以下示例返回最低(最小)税率。
SELECT MIN(TaxRate)
FROM Sales.SalesTaxRate;
GO
结果集如下。
-------------------
5.00
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
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
C. 使用 MIN
以下示例使用 MIN 聚合函数返回指定销售订单集中成本最低的(最小)产品的价格。
-- Uses AdventureWorks
SELECT DISTINCT MIN(UnitPrice)
FROM dbo.FactResellerSales
WHERE SalesOrderNumber IN (N'SO43659', N'SO43660', N'SO43664');
结果集如下。
------
5.1865
D. 将 MIN 与 OVER 配合使用
以下示例使用 MIN OVER() 分析函数返回每个销售订单中成本最低的产品的价格。 结果集根据 SalesOrderID 列进行分区。
-- Uses AdventureWorks
SELECT DISTINCT MIN(UnitPrice) OVER (PARTITION BY SalesOrderNumber) AS LeastExpensiveProduct,
SalesOrderNumber
FROM dbo.FactResellerSales
WHERE SalesOrderNumber IN (N'SO43659', N'SO43660', N'SO43664')
ORDER BY SalesOrderNumber;
结果集如下。
LeastExpensiveProduct SalesOrderID
--------------------- ----------
5.1865 SO43659
419.4589 SO43660
28.8404 SO43664