적용 대상: SQL Server 2025 (17.x)
Azure SQL Database Azure
SQL Managed Instance
Azure Synapse Analytics
Warehouse in Microsoft Fabric
SQLdatabase in Microsoft Fabric
함수는 PRODUCT 표현식 내 모든 값의 곱, 또는 값만 DISTINCT 을 반환합니다. 숫자 열에만 사용합니다. Null 값은 무시됩니다.
Syntax
집합 함수 구문:
PRODUCT ( [ ALL | DISTINCT ] expression )
분석 함수 구문:
PRODUCT ( [ ALL ] expression) OVER ( [ partition_by_clause ] [ order_by_clause ] )
Arguments
전체
집계 함수를 모든 값에 적용합니다.
ALL 기본값입니다.
독특한
고유 값의 곱을 반환한다는 것을 명시 PRODUCT 합니다.
expression
상수, 열 또는 함수 및 산술, 비트 및 문자열 연산자의 조합입니다. 식 은 비트 데이터 형식을 제외하고 정확한 숫자 또는 근사값 데이터 형식 범주의 식입니다. 집계 함수 및 하위 쿼리는 허용되지 않습니다. 자세한 내용은 식을 참조하세요.
오버 ([ partition_by_clause ] [ order_by_clause ] )
함수가 적용되기 전에 행 집합의 분할 및 순서를 결정합니다.
partition_by_clause 절에서 생성된 결과 집합을 FROM 함수가 적용되는 파티션으로 나눕니다. 지정하지 않을 경우 쿼리 결과 집합의 모든 행이 단일 그룹으로 취급됩니다.
order_by_clause는 작업이 수행되는 논리적 순서를 결정합니다. 자세한 내용은 SELECT - OVER 절을 참조하세요.
반환 형식
가장 정확한 식 데이터 형식의 모든 식 값의 곱을 반환합니다.
| 식 결과 | 반환 형식 |
|---|---|
| tinyint | int |
| smallint | int |
| int | int |
| bigint | bigint |
| 십진법 범주 (p, s) |
s가 십진법(38, 0)이라0면, 그렇지 않으면 십진법(38, 6)이다. |
| money 및 smallmoney 범주 | money |
| float 및 real 범주 | float |
Remarks
Azure SQL Managed Instance에 PRODUCT 대한 지원은 Azure SQL Managed InstanceAUTD로 제한됩니다.
PRODUCT는 and OVER 절 없이 ORDER BY 사용할 때 결정적 함수입니다. and OVER 절로 ORDER BY 지정하면 비결정적입니다. 자세한 내용은 결정적 함수와 비결정적 함수를 참조하세요.
Examples
이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.
A. 행 곱하기
다음 예시는 다음과 PRODUCT 같은 함수를 사용합니다:
SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2023-05-24'
GROUP BY ProductId;
결과 집합은 다음과 같습니다.
ProductOfPrices
----------
2526.2435
41.916
3251.9077
640559.8491
1469352.0378
222137708.073
11432159376.271
5898056028.2633
14030141.2883
2526.4194
B. OVER 절 사용
다음 예시는 가상의 금융 상품에 대한 수익률을 제공하기 위해 조 OVER 항이 포함된 함수를 사용합니다PRODUCT. 데이터는 .에 의해 finInstrument분할됩니다.
SELECT finInstrument,
PRODUCT(1 + rateOfReturn) OVER (PARTITION BY finInstrument) AS CompoundedReturn
FROM (VALUES (0.1626, 'instrumentA'),
(0.0483, 'instrumentB'),
(0.2689, 'instrumentC'),
(-0.1944, 'instrumentA'),
(0.2423, 'instrumentA')
) AS MyTable(rateOfReturn, finInstrument);
결과 집합은 다음과 같습니다.
finInstrument CompoundedReturn
------------- ---------------------------------------
instrumentA 1.163527
instrumentA 1.163527
instrumentA 1.163527
instrumentB 1.048300
instrumentC 1.268900