MIN (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar minimivärdet för alla värden för det angivna uttrycket i en grupp. Kan följas av OVER-satsen .

Anmärkning

Information om hur du får minimivärdet för alla värden för flera uttryck infogade finns i Logiska funktioner – MINST.

Transact-SQL syntaxkonventioner

Syntax

Syntax för sammansättningsfunktionen:

MIN ( [ ALL | DISTINCT ] expression )

Analysfunktionssyntax:

MIN ( [ ALL ] expression ) OVER ( [ <partition_by_clause> ] [ <order_by_clause> ] )

Arguments

ALL

Tillämpar aggregeringsfunktionen på alla värden. ALL används som standard.

SÄRSKILD

Anger att varje unikt värde beaktas. DISTINCT är inte meningsfullt med MINoch är endast tillgängligt för ISO-kompatibilitet.

uttryck

En konstant, kolumnnamn eller funktion och valfri kombination av aritmetiska operatorer, bitvis och strängoperatorer. MIN kan användas med kolumner för numeriska kolumner, tecken, nchar, varchar, nvarchar, uniqueidentifier eller datetime , men inte med bitkolumner . Mängdfunktioner och underfrågor är inte tillåtna.

Mer information finns i Uttryck.

ÖVER ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause delar upp resultatuppsättningen FROM som genereras av -satsen i partitioner som funktionen tillämpas på. Om det inte anges behandlar funktionen alla rader i frågeresultatuppsättningen som en enda grupp.

order_by_clause avgör i vilken logisk ordning åtgärden utförs.

Mer information finns i SELECT - OVER-satsen.

Returtyper

Returnerar ett värde som är samma som uttryck.

Anmärkningar

MIN ignorerar alla null-värden.

Med teckendatakolumner MIN hittar du det lägsta värdet i sorteringssekvensen.

MIN är en deterministisk funktion när den OVER används utan - och-satserna ORDER BY . Det är icke-terministiskt när det OVER anges med - och-satserna ORDER BY . Mer information finns i Deterministiska och icke-terministiska funktioner.

MIN fungerar på en uppsättning rader. Information om hur du hämtar minimivärdet för en uppsättning värden i rad finns i Logiska funktioner – MINST.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Grundläggande exempel

I följande exempel returneras den lägsta (lägsta) skattesatsen.

SELECT MIN(TaxRate)
FROM Sales.SalesTaxRate;
GO

Här är resultatet.

-------------------
5.00

B. Använda OVER-satsen

I följande exempel används MINfunktionerna , MAX, AVGoch COUNT med OVER -satsen för att tillhandahålla aggregerade värden för varje avdelning i HumanResources.Department tabellen.

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;

Här är resultatet.

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

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Använd MIN

I följande exempel används aggregeringsfunktionen MIN för att returnera priset för den billigaste (lägsta) produkten i en angiven uppsättning försäljningsorder.

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

Här är resultatet.

------
5.1865

D. Använda MIN med OVER

I följande exempel används analysfunktionen MIN OVER() för att returnera priset på den billigaste produkten i varje försäljningsorder. Resultatuppsättningen partitioneras av SalesOrderID kolumnen.

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

Här är resultatet.

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