제품 (Transact-SQL)

적용 대상: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceAzure Synapse AnalyticsWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

함수는 PRODUCT 표현식 내 모든 값의 곱, 또는 값만 DISTINCT 을 반환합니다. 숫자 열에만 사용합니다. Null 값은 무시됩니다.

Transact-SQL 구문 표기 규칙

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가 십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

이 글의 코드 샘플은 Azure Data SQL Samples Repository GitHub 저장소에서 다운로드할 수 있는 , , AdventureWorksDW2025또는 AdventureWorksLT2025 샘플 데이터베이스를 사용합니다AdventureWorks2025.

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 절 사용

다음 예시는 가상의 금융 상품에 대한 수익률을 제공하기 위해 조 PRODUCT 항이 포함된 함수를 사용합니다OVER. 데이터는 .에 의해 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