## Syntax
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart LR
x_0_0[PRODUCT]:::quoted --> x_0_1["("]:::quoted
x_0_1 --> x_0_2[DISTINCT]:::quoted
x_0_1 --> x_0_3
x_0_2 --> x_0_3[<a href="Invantive UniversalSQL/Grammar/Expression" class="internal-link">expression</a>]
x_0_3 --> x_0_4[")"]:::quoted
```
## Purpose
Group function to multiply together individual numerical values. Multiplying large values can quickly exceed the range of the resulting `decimal` data type. The product group function is typically used in financial and probability calculations with values near 1. Occurrences of `null` are ignored; when solely `null` values are present, the outcome is 1.
## Examples
The following example calculates the cumulative price indexation over the yearly indexation factors of the customer contracts:
```sql
select product(idx.factor)
from csvtable
( passing 'Acme Industries#2024#1.02|Acme Industries#2025#1.03|Carlson Ltd#2024#1.05'
row delimiter '|'
column delimiter '#'
columns customer_name varchar2 position next
, year number position next
, factor number position next
) idx
-------------------
1.10313
```
The following example calculates per customer the cumulative indexation factor to apply to the original contract price:
```sql
select idx.customer_name
, product(idx.factor)
from csvtable
( passing 'Acme Industries#2024#1.02|Acme Industries#2025#1.03|Carlson Ltd#2024#1.05'
row delimiter '|'
column delimiter '#'
columns customer_name varchar2 position next
, year number position next
, factor number position next
) idx
group
by idx.customer_name
order
by idx.customer_name
-------------------
Acme Industries 1.0506
Carlson Ltd 1.05
```