Поделиться через


ПРОДУКТ (Transact-SQL)

Относится к: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsWarehouse in Microsoft FabricSQL database 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

Применяет агрегатную функцию ко всем значениям. 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) Если s0, десятичный(38, 0), в противном случае десятичный(38, 6)
Категория money и smallmoney money
плавающая и реальная категория float

Remarks

Поддержка PRODUCT в Azure SQL Managed Instance ограничена Azure SQL Managed InstanceAUTD.

PRODUCT — детерминированная функция при использовании без OVER предложений и ORDER BY предложений. Он недетерминирован при указании в 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

В следующем примере используется 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