Aracılığıyla paylaş


MAX (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Bir grupta belirtilen ifadenin tüm değerlerinin üst sınırını döndürür. OVER yan tümcesi takip edilebilir.

Uyarı

Satır içinde birden çok ifadenin tüm değerlerinin üst sınırını almak için bkz. Mantıksal işlevler - EN BÜYÜK.

Transact-SQL söz dizimi kuralları

Sözdizimi

Toplama işlevinin söz dizimi:

MAX ( [ ALL | DISTINCT ] expression )

Analiz işlevinin söz dizimi:

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

Arguments

HEPSİ

Toplama işlevini tüm değerlere uygular. ALL varsayılan değerdir.

FARKLI

Her benzersiz değerin dikkate alındığını belirtir. DISTINCT ile MAXanlamlı değildir ve yalnızca ISO uyumluluğu için kullanılabilir.

expression

Sabit, sütun adı veya işlev ile aritmetik, bit düzeyinde ve dize işleçlerinin herhangi bir bileşimi. MAX sayısal, karakter, nchar, varchar, nvarchar, uniqueidentifier veya datetime sütunlarıyla kullanılabilir, ancak bit sütunlarında kullanılamaz. Toplama işlevlerine ve alt sorgulara izin verilmez.

Daha fazla bilgi için bkz . İfadeler.

OVER ( [ partition_by_clause ] [ order_by_clause ] )

partition_by_clause yan tümcesi tarafından FROM üretilen sonuç kümesini işlevin uygulandığı bölümlere böler. Belirtilmezse, işlev sorgu sonuç kümesinin tüm satırlarını tek bir grup olarak ele alır.

order_by_clause işlemin gerçekleştirildiği mantıksal sırayı belirler.

Daha fazla bilgi için bkz. SELECT - OVER yan tümcesi.

Dönüş türleri

İfadeyle aynı değeri döndürür.

Açıklamalar

MAX tüm null değerleri yoksayar.

MAX seçecek satır olmadığında döndürür NULL .

Karakter sütunları için harmanlama MAX dizisindeki en yüksek değeri bulur.

MAXve OVER yan tümceleri olmadan ORDER BY kullanıldığında belirleyici bir işlevdir. ve OVER yan tümceleriyle ORDER BY belirtildiğinde belirsiz değildir. Daha fazla bilgi için bkz . Deterministic ve nondeterministic functions.

MAX bir dizi satır üzerinde çalışır. Satır içi bir değer kümesinin en yüksek değerini almak için bkz. Mantıksal işlevler - EN BÜYÜK.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Temel örnek

Aşağıdaki örnek en yüksek (maksimum) vergi oranını döndürür.

SELECT MAX(TaxRate)
FROM Sales.SalesTaxRate;
GO

Sonuç kümesi aşağıdadır.

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

B. OVER yan tümcesini kullanma

Aşağıdaki örnek, tablodaki MINher bölüm MAX için toplu değerler sağlamak üzere yan tümcesiyle AVG birlikte , COUNT, OVERve HumanResources.Department işlevlerini kullanır.

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;

Sonuç kümesi aşağıdadır.

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. Karakter verileriyle MAX kullanma

Aşağıdaki örnek, veritabanı adını alfabetik olarak kullanarak sıralayan veritabanı adını döndürür. Örnekte sistem veritabanlarını seçmek için kullanılır WHERE database_id < 5.

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

Son sistem veritabanıdır tempdb.