다음을 통해 공유


제품 (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가 십진법(38, 0)이라0면, 그렇지 않으면 십진법(38, 6)이다.
moneysmallmoney 범주 money
floatreal 범주 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