Condividi tramite


MIN (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL in Microsoft Fabric

Restituisce il minimo di tutti i valori dell'espressione specificata in un gruppo. Può essere seguito dalla clausola OVER .

Annotazioni

Per ottenere il minimo di tutti i valori di più espressioni inline, vedere Funzioni logiche - LEAST.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

Sintassi della funzione di aggregazione:

MIN ( [ ALL | DISTINCT ] expression )

Sintassi della funzione analitica:

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

Argomenti

Tutti

Applica la funzione di aggregazione a tutti i valori. ALL è l'impostazione predefinita.

DISTINCT

Consente di considerare ogni valore univoco. DISTINCT non è significativo con MINe è disponibile solo per la compatibilità ISO.

expression

Costante, nome colonna o funzione e qualsiasi combinazione di operatori aritmetici, bit per bit e stringhe. MINpuò essere usato con colonne numeriche, char, nchar, varchar, nvarchar, uniqueidentifier o datetime, ma non con colonne di bit. Le funzioni di aggregazione e le sottoquery non sono consentite.

Per altre informazioni, vedere Espressioni.

CAMBIO ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause divide il set di risultati prodotto dalla FROM clausola in partizioni a cui viene applicata la funzione. Se non specificato, la funzione tratta tutte le righe del set di risultati della query come un unico gruppo.

order_by_clause determina l'ordine logico in cui viene eseguita l'operazione.

Per altre informazioni, vedere clausola SELECT - OVER.

Tipi restituiti

Restituisce un valore uguale a expression.

Osservazioni:

MIN ignora tutti i valori Null.

Con le colonne di dati di tipo carattere, MIN trova il valore più basso nella sequenza di confronto.

MIN è una funzione deterministica se utilizzata senza le OVER clausole e ORDER BY . È non deterministico se specificato con le OVER clausole e ORDER BY . Per altre informazioni, vedere Funzioni deterministiche e non deterministiche.

MIN opera su un set di righe. Per ottenere il valore minimo per un set di valori inline, vedere Funzioni logiche - LEAST.

Esempi

Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.

R. Esempio di base

Nell'esempio seguente viene restituita l'aliquota fiscale più bassa (minima).

SELECT MIN(TaxRate)
FROM Sales.SalesTaxRate;
GO

Il set di risultati è il seguente.

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

B. Usare la clausola OVER

Nell'esempio seguente vengono usate le MINfunzioni , MAXAVG, e COUNT con la OVER clausola per fornire valori aggregati per ogni reparto della HumanResources.Department tabella.

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;

Il set di risultati è il seguente.

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

C. Usare MIN

Nell'esempio seguente viene utilizzata la MIN funzione di aggregazione per restituire il prezzo del prodotto meno costoso (minimo) in un set specificato di ordini di vendita.

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

Il set di risultati è il seguente.

------
5.1865

D. Usare MIN con OVER

Gli esempi seguenti usano la MIN OVER() funzione analitica per restituire il prezzo del prodotto meno costoso in ogni ordine di vendita. Il set di risultati viene partizionato in base alla colonna 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;

Il set di risultati è il seguente.

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