Operator Type:
Operator Scope of Action:
Operator Purpose:
Data Type Returned:
Operator First Added:
Operator in Current Baseline:
Operator Last Altered:
Operator Uses Regular Expressions:
Operator Uses Scoped Arguments:
Operator Has Conditional Arguments:
Operator Has Newer Dot-Operator Variant:
Function [other Function type actions]
Conditional Group [operators of similar scope]
Mathematical [other Mathematical operators]
Number [about Number data type]
v4.0.0
Baseline
As at baseline
[More on regular expressions in Tinderbox]
[More on scoped arguments in Action Code]
[More on conditional operator arguments]
Yes
sum_if(scope, condition, expressionStr)
This computes the Number sum of every expressionStr value in each scope item (defining scope), as filtered by a condition expression. See sum() for a related non-conditional operator.
scope describes the notes to be examined and may be any group designator including a find() query. sum_if() omits notes for which $Searchable is false.
In addition, where may be argument that designates a particular (single) note other than this.
condition is action code forming a valid conditional query test, i.e. it equates to true
when matched. Some query-style operators terms may allow use of regular expressions.
expressionStr can be an expression, but is typically a Number-attribute value or a List or Set holding a list of numbers. It can also be a literal number 1, i.e. if the test is true
from that item then add one to the retuned value of sum_if().
For example,
$MyNumber = sum_if(children,$Prototype=="p_Problem",1);
sums the number of children of the current note whose prototype is 'p_Prototype'. If tested value is a string with spaces, e.g. "p Prototype" vs. "p_Prototype" then use double quotes around the value.
The newer count_if() offers a more intuitive method of counting matches rather than the value of matched items.
See also—notes linking to here: