# calculate

## Overview

The `calculate` statement is used to perform arithmetic operations using literal and column values.

## Syntax

**`calculate column`***`ResultCol`***`as`** *`source operation source`*

where *source* is either of **`column`**`colName` or **`value`**`literal_value`

and *operation* is one of the characters **`+ - * / %`** for addition, subtraction, multiplication, division and modulo respectively.

{% hint style="info" %}
There must be whitespace on each side of the \_operation\`\_character
{% endhint %}

Examples:\
`calculate column ResultCol as column Amount * value 1.2`\
`calculate column Net as column total - column cogs`\
`calculate column constant_7 as value 3.5 + value 3.5`

## Details

The *ResultCol* parameter is the name of the column that will hold the results. This column may or may not exist (if necessary it will be created automatically).

Both of the two *source* parameters can specify a literal value, or the name of a column containing the value to use when performing the calculation.

* A literal value is specified using **`value`***`N`* where *N* is the literal number required
* A column name is specified using **`column`***`colName`* where *ColName* is the name of the column containing the values required

{% hint style="info" %}
The *ResultCol* may be the same as a column specified by one of the *source* parameters in which case any existing values in it will be updated with the result of the calculation.
{% endhint %}

### Additional notes:

* Any blank or non-numeric values in a source column will be treated as 0
* An attempt to divide by zero will result in 0
* When performing a modulo operation, the two source values are rounded to the nearest integer first
* If the result column already exists then if [option overwrite](/3.5.4/data-pipelines/transform/language/option.md) is set to `no`, only blank cells in the result column will be updated.

## Examples

* Add 1.5 to the values in the Rate column:

`calculate column Rate as column Rate + value 1.5`

* Multiply the values in the Rate column by those in the Quantity column
* Store the result in a new column called Charge

`calculate column Charge as column Rate * column Quantity`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://olddocs.exivity.io/3.5.4/data-pipelines/transform/language/calculate.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
