Formulas are constructed by stringing together operators, values and fun= ctions in a way that a single value results from them. Different elements i= n the formula give different numbers of values:
Literal values, fields, and mathematical functions all result in one value
Relation functions can resu= lt in multiple values, depending on the number= of issues that are involved
Operators or aggregating functions reduce multiple values into one
A formula must result in a single value, so
is invalid, but =
subtasks('Quantity')sum(subtasks('Quantity'))
is valid.
Read more about Functions.
You can use constant values in your formulas. Their type is determined = by their format.
To use a number constant, just use the number itself, for example =
12000
or 42.86
.
You will need this for certain functions. Texts cannot be used to calcul=
ate something. To make a text value, use single quotes =E2=80=98, for example
=E2=80=98this is a text=E2=80=99
or 'cau=
ses=E2=80=99
.
Fields
You can use any custom field of type number, or text fields that contain=
a number. JSU converts texts that only consist of a number to a number typ=
e.
To use a custom field, type its name, for example
. Quotes are optional for values with=
out spaces or special characters, e. g. Budget
or=
Quantity
. If your field=E2=80=99s name contains spaces or spe=
cial characters, you must surround it with double quotes, for example =E2=80=9CStory Points=E2=80=9D
"Quantity"
.
Operators combine two values. The following operators are supported:
Operator 
Description 
Example 


Addition 


Subtraction 


Multiplication 


Division 


Potentiation: Raises the first value to the p= ower of the second, e. g. 2^{8} 


Percentage: As on a calculator, you can add o= r subtract a percentage to/from a value. 

Parentheses can be used to group operations to override operator precede=
nce. 2 * 3 + 3
equals 9, but 2 * (3 + 3)
equals 1=
2.
Functions are versatile, we provide three types of them.
One type consists of mathem= atical functions, to enable more calculations = you can do
The second are aggregating = functions, where you combine multiple values i= nto one, which is necessary to reduce the results of some functions = of the third type
Relation functions, which fetch values from other related issues, so you can get val= ues from subtasks for example
Jira automatically rounds values to three decimal places. Be careful whe= n you need exact results.
Mathematical Function  Description 
Example 


Rounds the passed value to the specified numb= er of significant decimal digits. 


Rounds the passed value to the nearest lower = integer. 


Rounds the passed value to the nearest higher= integer. 


Gives the absolute value, i. e. the positive = value. 


Normalises negative values to 1, zero to 0, = and positive values to 1. 


Calculates the remainder of the dividend when= divided by the divisor. 

Agg= regating Function 
Des= cription 
Exa= mple 

Sum of the passed values 


Average of the passed values 


Smallest of the passed values 


Largest of the passed values 

Rel= ation Function 
Des= cription 
Exa= mple 

Retrieves the values of the passed field from= all subtasks. =20
Must be aggregated before using outside of a function. =20 


Retrieves the values of the passed field from= the parent of a subtask. 


Retrieves the values of the passed field from= all issues in an epic. =20
Must be aggregated before using outside of a function. =20 


Retrieves the values of the passed field from= the epic of an issue. 


Retrieves the values of the passed field from= all linked issues. =20
Must be aggregated before using outside of a function. =20The link type must be given in single quotes: 

You need to ensure the value of the Calculated Field =E2=80=9CPrice=E2=
=80=9D stays above 0, but is at most 20. A minimum bound can be set by usin=
g max
and a maximum using min
. The price is calcu=
lated using the =E2=80=9CNet Price=E2=80=9D field and the =E2=80=9CVAT=E2=
=80=9D field.
We first need to calculate the price, which can be done using =
"Net Price=E2=80=9D + VAT%
Then, we want to set the upper bound of 20, so we get min(=E2=
=80=9DNet Price=E2=80=9D + VAT%, 20)
At last, we need the lower bound, so we get max(min(=E2=80=9DN=
et Price=E2=80=9D) + VAT%, 20), 1)
You have a field requesting the =E2=80=9CNumber of Participants=E2=80=9D= on a transition screen. Your subsequent calculations require this number t= o be a whole number. To ensure this, you use a Calculated Field Post Functi= on on the same transition.
The post function will write to the =E2=80=9CNumber of Participants= =E2=80=9D field
We want to operate on the same field, so we start with the formula <= code>=E2=80=9CNumber of Participants=E2=80=9D
Then, we want to make sure that it is a whole number. We do this by =
rounding, we round up in this case: ceiling(=E2=80=9DNumber of Partic=
ipants=E2=80=9D)
If the entered number is already a whole number, it is unchanged. Howeve=
r, if it is not, and someone enters 15.3
for example, it is ro=
unded up to the next whole number, and we get 16
.
Because w=
e write the result to the same field during the transition, i. e. =E2=80=9C=
Number of Participants=E2=80=9D, the same field is adjusted, and we have su=
ccessfully sanitised the input.
The mathematical functions can also operate on the multiple values that = are returned by the relation functions. That way you can for example round = all the values returned by a subtask.
avg(round(subtasks('Number of Affected Systems'), 0))
The functions accept the lists in the following ways:
round(number_list, decimals)
floor(number_list)
ceiling(number_list)
abs(number_list)
signum(number_list)
mod(dividend_list, divisor)
The function then is applied separately to each element in the list, and= a list with the new values is returned. The mathematical functions do not = reduce the list in size, the only way to do that is to use an aggregating f= unction.