Udostępnij za pomocą


MIN (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca wartość minimalną wszystkich wartości określonego wyrażenia w grupie. Po klauzuli OVER można wykonać klauzulę OVER .

Uwaga / Notatka

Aby uzyskać minimalną wartość wszystkich wartości wielu wyrażeń wbudowanych, zobacz Funkcje logiczne — NAJMNIEJ.

Transact-SQL konwencje składni

Składnia

Składnia funkcji agregacji:

MIN ( [ ALL | DISTINCT ] expression )

Składnia funkcji analitycznej:

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

Arguments

ALL

Stosuje funkcję agregacji do wszystkich wartości. ALL jest wartością domyślną.

ODMIENNY

Określa, że każda unikatowa wartość jest brana pod uwagę. DISTINCT nie ma znaczenia w przypadku elementu i jest dostępny tylko w celu zapewnienia zgodności ze standardem MINISO.

expression

Stała, nazwa kolumny lub funkcja oraz dowolna kombinacja operatorów arytmetycznych, bitowych i ciągów. MIN można używać z kolumnami liczbowymi, char, nchar, varchar, nvarchar, uniqueidentifier lub datetime , ale nie z kolumnami bitowymi . Funkcje agregujące i podzapytania nie są dozwolone.

Aby uzyskać więcej informacji, zobacz Wyrażenia.

KONIEC ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause dzieli zestaw wyników generowany przez klauzulę FROM na partycje, do których jest stosowana funkcja. Jeśli nie zostanie określony, funkcja traktuje wszystkie wiersze zestawu wyników zapytania jako pojedynczą grupę.

order_by_clause określa kolejność logiczną, w której jest wykonywana operacja.

Aby uzyskać więcej informacji, zobacz SELECT — OVER, klauzula.

Typy zwracane

Zwraca wartość taką samą jak wyrażenie.

Uwagi

MIN Ignoruje wszystkie wartości null.

W przypadku kolumn MIN danych znaków znajduje najniższą wartość w sekwencji sortowania.

MIN jest funkcją deterministyczną, gdy jest używana bez OVER klauzul i ORDER BY . Jest to niedeterministyczne, gdy jest określony z klauzulami OVER i ORDER BY . Aby uzyskać więcej informacji, zobacz Funkcje deterministyczne i niedeterministyczne.

MIN działa na zestawie wierszy. Aby uzyskać minimalną wartość zestawu wartości wbudowanych, zobacz Funkcje logiczne — NAJMNIEJ.

Przykłady

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Przykład podstawowy

Poniższy przykład zwraca najniższą (minimalną) stawkę podatkową.

SELECT MIN(TaxRate)
FROM Sales.SalesTaxRate;
GO

Oto zestaw wyników.

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

B. Używanie klauzuli OVER

W poniższym przykładzie użyto MINfunkcji , MAX, AVGi COUNT z klauzulą OVER , aby podać zagregowane wartości dla każdego działu w HumanResources.Department tabeli.

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;

Oto zestaw wyników.

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

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Użyj min

W poniższym przykładzie użyto MIN funkcji agregującej, aby zwrócić cenę produktu o najniższym (minimalnym) w określonym zestawie zamówień sprzedaży.

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

Oto zestaw wyników.

------
5.1865

D. Używanie funkcji MIN z funkcją OVER

W poniższych przykładach użyto funkcji analitycznej MIN OVER() , aby zwrócić cenę najtańszego produktu w każdym zamówieniu sprzedaży. Zestaw wyników jest partycjonowany według kolumny 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;

Oto zestaw wyników.

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