適用於: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
將彙總函式套用至所有值。
ALL 是預設值。
DISTINCT
指定要考量每個唯一值。
DISTINCT 與 沒有 MIN意義,並且僅適用於 ISO 相容性。
expression
常數、資料行名稱或函式,以及算術運算子、位元運運算元和字串運算子的任意組合。
MIN 可與 numeric、 char、 nchar、 varchar、 nvarchar、 uniqueidentifier 或 datetime 資料行搭配使用,但不能與 位元 資料行搭配使用。 不允許彙總函式和子查詢。
如需詳細資訊,請參閱運算式。
超過 ( [ partition_by_clause ] [ order_by_clause ] )
partition_by_clause 會將子句所 FROM 產生的結果集分割成套用函式的分割區。 如未指定,此函數會將查詢結果集的所有資料列視為單一群組。
order_by_clause 可決定執行作業的邏輯順序。
如需相關資訊,請參閱 SELECT - OVER 子句。
傳回類型
傳回與 expression 相同的值。
備註
MIN 忽略任何空值。
使用字元資料直欄時, MIN 會尋找對照順序中的最低值。
MIN在不使用 and OVER 子句時ORDER BY是一個確定性函數。 當使用 and OVER 子句指定ORDER BY時,它是不確定的。 如需詳細資訊,請參閱 確定性和非確定性函數。
MIN 在一組列上運作。 若要取得一組內嵌值的最小值,請參閱 邏輯函數 - 最小值。
範例
本文中的程式代碼範例會使用 AdventureWorks2025 或 AdventureWorksDW2025 範例資料庫,您可以從 Microsoft SQL Server 範例和社群專案 首頁下載。
A. 基本範例
下列範例會傳回最低 (最小) 稅率。
SELECT MIN(TaxRate)
FROM Sales.SalesTaxRate;
GO
結果集如下所示。
-------------------
5.00
B. 使用 OVER 子句
下列範例會使用 、 、 和MIN函式搭配子MAX句,為表格中的AVG每個部門提供彙總COUNT值。 OVERHumanResources.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