MIN (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Gibt den kleinsten Wert im Ausdruck zurück. Darauf folgt möglicherweise die OVER-Klausel.

Transact-SQL-Syntaxkonventionen

Syntax

-- Aggregation Function Syntax  
MIN ( [ ALL | DISTINCT ] expression )  
  
-- Analytic Function Syntax   
MIN ( [ ALL ] expression ) OVER ( [ <partition_by_clause> ] [ <order_by_clause> ] )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

ALL
Wendet die Aggregatfunktion auf alle Werte an. ALL ist die Standardeinstellung.

DISTINCT
Gibt an, dass jeder eindeutige Wert berücksichtigt wird. DISTINCT ist bei MIN ohne Bedeutung und nur aus Gründen der ISO-Kompatibilität verfügbar.

expression
Dies ist eine Konstante, ein Spaltenname oder eine Funktion und eine beliebige Kombination aus arithmetischen, bitweisen und Zeichenfolgenoperatoren. MIN kann mit Spalten vom Typ numeric, char, varchar, uniqueidentifier oder datetime, jedoch nicht mit Spalten vom Typ bit verwendet werden. Aggregatfunktionen und Unterabfragen sind nicht zulässig.

Weitere Informationen finden Sie unter Ausdrücke (Transact-SQL).

OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause unterteilt das von der FROM-Klausel erzeugte Resultset in Partitionen, auf die die Funktion angewendet wird. Wird dies nicht angegeben, verarbeitet die Funktion alle Zeilen des Abfrageresultsets als einzelne Gruppe. order_by_clause bestimmt die logische Reihenfolge, in der der Vorgang ausgeführt wird. order_by_clause ist erforderlich. Weitere Informationen finden Sie unter OVER-Klausel (Transact-SQL).

Rückgabetypen

Gibt einen Wert zurück, der mit expression identisch ist.

Hinweise

MIN ignoriert alle NULL-Werte.

Bei Zeichendatenspalten findet MIN den kleinsten Wert gemäß der Sortierreihenfolge.

MIN ist eine deterministische Funktion, wenn sie ohne die OVER- und ORDER BY-Klauseln angegeben wird. Sie ist nicht deterministisch, wenn sie mit den OVER- und ORDER BY-Klauseln angegeben wird. Weitere Informationen finden Sie unter Deterministic and Nondeterministic Functions.

Beispiele

A. Einfaches Beispiel

Im folgenden Beispiel wird der niedrigste Steuersatz (Mindeststeuersatz) zurückgegeben. In dem Beispiel wird die AdventureWorks2022-Datenbank verwendet

SELECT MIN(TaxRate)  
FROM Sales.SalesTaxRate;  
GO  

Hier ist das Resultset.

-------------------
 
5.00
 
(1 row(s) affected)

B. Verwenden der OVER-Klausel

Im folgenden Beispiel werden die Funktionen MIN, MAX, AVG und COUNT mit der OVER-Klausel verwendet, um aggregierte Werte für jede Abteilung in der HumanResources.Department-Tabelle der AdventureWorks2022-Datenbank bereitzustellen.

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  
JOIN HumanResources.EmployeeDepartmentHistory AS edh  
     ON eph.BusinessEntityID = edh.BusinessEntityID  
JOIN HumanResources.Department AS d  
 ON d.DepartmentID = edh.DepartmentID  
WHERE edh.EndDate IS NULL  
ORDER BY Name;  

Hier ist das Resultset.

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  
  
 (16 row(s) affected)  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

C. Verwenden von MIN

Im folgenden Beispiel wird die MIN-Aggregatfunktion verwendet, um den Preis des günstigsten Produkts in einer angegebenen Menge von Verkaufsaufträgen zurückzugeben.

-- Uses AdventureWorks  
  
SELECT DISTINCT MIN(UnitPrice)  
FROM dbo.FactResellerSales   
WHERE SalesOrderNumber IN (N'SO43659', N'SO43660', N'SO43664');  

Hier ist das Resultset.

------  
5.1865

D: Verwenden von MIN mit OVER

Im folgenden Beispiel wird die analytische MIN OVER()-Funktion verwendet, um den Preis des günstigsten Produkts in jedem Verkaufsauftrag zurückzugeben. Das Resultset wird durch die SalesOrderID-Spalte partitioniert.

-- 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;  

Hier ist das Resultset.

LeastExpensiveProduct SalesOrderID  
--------------------- ----------  
5.1865                SO43659  
419.4589              SO43660  
28.8404               SO43664

Weitere Informationen

Aggregatfunktionen (Transact-SQL)
MAX (Transact-SQL)
OVER-Klausel (Transact-SQL)