MAX (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 maximalt antal värden för det angivna uttrycket i en grupp. Kan följas av OVER-satsen .

Anmärkning

Om du vill få maximalt antal värden för flera uttryck infogade läser du Logiska funktioner – GREATEST.

Transact-SQL syntaxkonventioner

Syntax

Syntax för sammansättningsfunktionen:

MAX ( [ ALL | DISTINCT ] expression )

Analysfunktionssyntax:

MAX ( [ 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 MAXoch är endast tillgängligt för ISO-kompatibilitet.

uttryck

En konstant, kolumnnamn eller funktion och valfri kombination av aritmetiska operatorer, bitvis och strängoperatorer. MAX 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

MAX ignorerar alla null-värden.

MAX returnerar NULL när det inte finns någon rad att välja.

För teckenkolumner MAX hittar du det högsta värdet i sorteringssekvensen.

MAX ä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.

MAX fungerar på en uppsättning rader. Information om hur du hämtar det maximala värdet för en uppsättning värden finns i Logiska funktioner – GREATEST.

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 högsta (högsta) skattesatsen.

SELECT MAX(TaxRate)
FROM Sales.SalesTaxRate;
GO

Här är resultatet.

-------------------
19.60
Warning, null value eliminated from aggregate.

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

C. Använd MAX med teckendata

I följande exempel returneras databasnamnet som sorterar med hjälp av databasnamnet alfabetiskt. I exemplet används WHERE database_id < 5för att välja systemdatabaserna.

SELECT MAX(name)
FROM sys.databases
WHERE database_id < 5;

Den sista systemdatabasen är tempdb.