적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
Microsoft Fabric의 SQL 데이터베이스
그룹에서 지정된 식의 모든 값 중 최소값을 반환합니다. 다음에 OVER 절을 사용할 수 있습니다.
비고
여러 식 인라인의 모든 값 중 최소값을 얻으려면 논리 함수 - LEAST을 참조하세요.
구문
집계 함수 구문:
MIN ( [ ALL | DISTINCT ] expression )
분석 함수 구문:
MIN ( [ ALL ] expression ) OVER ( [ <partition_by_clause> ] [ <order_by_clause> ] )
인수
전체
모든 값에 집계 함수를 적용합니다.
ALL 기본값입니다.
DISTINCT
각 고유 값을 고려하도록 지정합니다.
DISTINCT 는 의미가 MIN없으며 ISO 호환성에서만 사용할 수 있습니다.
expression
상수, 열 이름 또는 함수 및 산술, 비트 및 문자열 연산자의 조합입니다.
MIN
는 숫자, char, nchar, varchar, nvarchar, uniqueidentifier 또는 datetime 열과 함께 사용할 수 있지만 비트 열에는 사용할 수 없습니다. 집계 함수 및 하위 쿼리는 허용되지 않습니다.
자세한 내용은 식을 참조하세요.
오버 ([ partition_by_clause ] [ order_by_clause ] )
partition_by_clause 절에서 생성된 결과 집합을 FROM 함수가 적용되는 파티션으로 나눕니다. 지정하지 않을 경우 쿼리 결과 집합의 모든 행이 단일 그룹으로 취급됩니다.
order_by_clause는 작업이 수행되는 논리적 순서를 결정합니다.
자세한 내용은 SELECT - OVER 절을 참조하세요.
반환 형식
식과 동일한 값을 반환합니다.
설명
MIN 은 null 값을 무시합니다.
문자 데이터 열을 사용하여 MIN 정렬 시퀀스에서 가장 낮은 값을 찾습니다.
MIN는 and OVER 절 없이 ORDER BY 사용할 때 결정적 함수입니다. and OVER 절로 ORDER BY 지정하면 비결정적입니다. 자세한 내용은 결정적 함수 및 비결정적 함수를 참조하세요.
MIN 는 행 집합에서 작동합니다. 인라인 값 집합의 최소값을 가져오려면 논리 함수 - 최소값을 참조하세요.
예제
이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.
A. 기본 예제
다음 예에서는 가장 낮은(최소) 세율이 반환됩니다.
SELECT MIN(TaxRate)
FROM Sales.SalesTaxRate;
GO
결과 집합은 다음과 같습니다.
-------------------
5.00
B. OVER 절 사용
다음 예제에서는 절과 함께 , MIN및 MAXAVG 함수를 사용하여 COUNT테이블의 OVER 각 부서에 HumanResources.Department 대해 집계된 값을 제공합니다.
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;
결과 집합은 다음과 같습니다.
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
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
C. MIN 사용
다음 예제에서는 집계 함수를 MIN 사용하여 지정된 판매 주문 집합에서 가장 저렴한(최소) 제품의 가격을 반환합니다.
-- Uses AdventureWorks
SELECT DISTINCT MIN(UnitPrice)
FROM dbo.FactResellerSales
WHERE SalesOrderNumber IN (N'SO43659', N'SO43660', N'SO43664');
결과 집합은 다음과 같습니다.
------
5.1865
D. OVER와 함께 MIN 사용
다음 예제에서는 분석 함수를 MIN OVER() 사용하여 각 판매 주문에서 가장 저렴한 제품의 가격을 반환합니다. 결과 집합은 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;
결과 집합은 다음과 같습니다.
LeastExpensiveProduct SalesOrderID
--------------------- ----------
5.1865 SO43659
419.4589 SO43660
28.8404 SO43664