Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Warehouse in Microsoft Fabric
SQL 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í.
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
Související obsah
- agregační funkce (Transact-SQL)
- SELECT - OVER – klauzule (Transact-SQL)