Sdílet prostřednictvím


PRODUKT (Transact-SQL)

Platí na: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsWarehouse in Microsoft FabricSQL database in Microsoft Fabric

Funkce vrací PRODUCT součin všech hodnot, nebo pouze hodnot, DISTINCT ve výrazu. Používejte pouze s číselnými sloupci. Hodnoty null se ignorují.

Transact-SQL konvence syntaxe

Syntax

Syntaxe agregovaných funkcí:

PRODUCT ( [ ALL | DISTINCT ] expression )

Syntaxe analytické funkce:

PRODUCT ( [ ALL ] expression) OVER ( [ partition_by_clause ] [ order_by_clause ] )

Arguments

ALL

Použije agregační funkci na všechny hodnoty. ALL je výchozí.

ODLIŠNÝ

Specifikuje, že PRODUCT vrací součin unikátních hodnot.

expression

Konstanta, sloupec nebo funkce a jakákoli kombinace aritmetických, bitových a řetězcových operátorů. výraz je výraz přesné číselné nebo přibližné kategorie číselného datového typu s výjimkou datového typu bitů . Agregační funkce a poddotazy nejsou povolené. Další informace naleznete v tématu Výrazy.

KONEC ( [ partition_by_clause ] [ order_by_clause ] )

Určuje dělení a řazení sady řádků před použití funkce.

partition_by_clause rozdělí sadu výsledků vytvořenou FROM klauzulí na oddíly, na které se funkce použije. Pokud není zadáno, funkce zachází se všemi řádky sady výsledků dotazu jako s jednou skupinou.

order_by_clause určuje logické pořadí, ve kterém se operace provádí. Další informace naleznete v tématu SELECT - OVER klauzule.

Návratové typy

Vrátí součin všech hodnot výrazů v nejpřesnějším datovém typu výrazu .

Výsledek výrazu Návratový typ
tinyint int
smallint int
int int
bigint bigint
Desetinná kategorie (P, S) Pokud s je 0, desetinné(38, 0), jinak desetinné(38, 6)
Kategorie peněz a drobných peněz money
float a real category float

Remarks

Podpora pro PRODUCT in Azure SQL Managed Instance je omezena na Azure SQL Managed InstanceAUTD.

PRODUCT je deterministická funkce při použití bez OVER klauzulí a ORDER BY klauzulí. Při zadání pomocí OVER klauzulí a ORDER BY klauzulí je nedeterministické. Další informace naleznete v tématu Deterministické a nedeterministické funkce.

Examples

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

A. Násobení řádků

Následující příklad používá funkci:PRODUCT

SELECT PRODUCT(UnitPrice) AS ProductOfPrices
FROM Purchasing.PurchaseOrderDetail
WHERE ModifiedDate <= '2023-05-24'
GROUP BY ProductId;

Tady je soubor výsledků.

ProductOfPrices
----------
2526.2435
41.916
3251.9077
640559.8491
1469352.0378
222137708.073
11432159376.271
5898056028.2633
14030141.2883
2526.4194

B. Použití klauzule OVER

Následující příklad používá PRODUCT funkci s klauzulí OVER k určení míry návratnosti hypotetických finančních nástrojů. Data jsou rozdělena na oddíly 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);

Tady je soubor výsledků.

finInstrument CompoundedReturn
------------- ---------------------------------------
instrumentA   1.163527
instrumentA   1.163527
instrumentA   1.163527
instrumentB   1.048300
instrumentC   1.268900