Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Warehouse in Microsoft Fabric
SQL 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) | Если s — 0, десятичный(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