Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Applies to: SQL Server 2025 (17.x) Preview
Azure SQL Database
Azure Synapse Analytics
SQL database in Microsoft Fabric
Retorna o PRODUTO de todos os valores, ou apenas os valores DISTINCT, na expressão. Use somente com colunas numéricas. Valores nulos são ignorados.
Convenções de sintaxe de Transact-SQL
Sintaxe
Sintaxe de função de agregação.
PRODUCT ( [ ALL | DISTINCT ] expression )
Sintaxe de função analítica.
PRODUCT ( [ ALL ] expression) OVER ( [ PARTITION BY clause ] ORDER BY clause)
Argumentos
TODOS
Aplica a função de agregação a todos os valores. ALL é o padrão.
DISTINÇÃO
Especifica que PRODUCT retorna o PRODUTO de valores exclusivos.
expressão
Uma constante, coluna ou função e qualquer combinação de operadores aritméticos, bit a bits e cadeia de caracteres. expressão é uma expressão da categoria exata de tipo de dados numérico ou numérico aproximado, exceto para o tipo de dados de bit . Funções e subconsultas de agregação não são permitidas. Para obter mais informações, consulte Expressions.
OVER ( [ cláusula PARTITION BY ] Cláusula ORDER BY )
Determina o particionamento e a ordenação de um conjunto de linhas antes que a função seja aplicada.
PARTITION BY
a cláusula divide o conjunto de resultados produzido pela cláusula FROM em partições às quais a função é aplicada. Se não for especificado, a função tratará todas as linhas do conjunto de resultados da consulta como um único grupo.
ORDER BY
A cláusula determina a ordem lógica na qual a operação é executada. Obrigatório Para obter mais informações, consulte a cláusula OVER.
Tipos de retorno
Retorna o produto de todos os valores de expressão no tipo de dados de expressão mais preciso.
Resultado da expressão | Tipo de retorno |
---|---|
tinyint | int |
smallint | int |
int | int |
bigint | bigint |
categoria decimal (p, s) | Se (s == 0): decimal(38, 0) Else: decimal(38, 6) |
money e smallmoney category | dinheiro |
float e categoria real | flutuar |
Observações
PRODUCT
é uma função determinística quando usada sem as OVER
cláusulas e ORDER BY
. É não determinístico quando especificado com as OVER
cláusulas e ORDER BY
. Para obter mais informações, confira Funções determinísticas e não determinísticas.
Exemplos
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2022
ou AdventureWorksDW2022
, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
Um. Multiplicar linhas juntas
Os exemplos a seguir mostram como usar a função PRODUCT
SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2002-05-24'
GROUP BY ProductId;
Este é um conjunto de resultados parcial.
ProductOfPrices
----------
2526.2435
41.916
3251.9077
21656.2655
40703.3993
4785336.3939
11432159532.8367
5898056095.7678
B. Usar a cláusula OVER
O exemplo a seguir usa a função PRODUCT com a cláusula OVER para fornecer uma taxa de retorno em instrumentos financeiros hipotéticos. Os dados são particionados por 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);
Veja aqui o conjunto de resultados.
finInstrument CompoundedReturn
------------- ---------------------------------------
instrumentA 1.163527
instrumentA 1.163527
instrumentA 1.163527
instrumentB 1.048300
instrumentC 1.268900