com.orientechnologies.orient.core.sql.functions.stat

## Class OSQLFunctionVariance

• All Implemented Interfaces:
OSQLFunction
Direct Known Subclasses:
OSQLFunctionStandardDeviation

```public class OSQLFunctionVariance
extends OSQLFunctionAbstract```
Compute the variance estimation for a given field.

This class uses the Weldford's algorithm (presented in Donald Knuth's Art of Computer Programming) to avoid multiple distribution values' passes. When executed in distributed mode it uses the Chan at al. pairwise variance algorithm to merge the results.

References

• Cook, John D. Accurately computing running variance.

• Knuth, Donald E. (1998) The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd Edition.

• Welford, B. P. (1962) Note on a method for calculating corrected sums of squares and products. Technometrics

• Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1979), Parallel Algorithm.

Author:
Fabrizio Fortino
• ### Field Summary

Fields
Modifier and Type Field and Description
`static String` `NAME`
• ### Fields inherited from class com.orientechnologies.orient.core.sql.functions.OSQLFunctionAbstract

`maxParams, minParams, name`
• ### Constructor Summary

Constructors
Constructor and Description
`OSQLFunctionVariance()`
```OSQLFunctionVariance(String iName, int iMinParams, int iMaxParams)```
• ### Method Summary

All Methods
Modifier and Type Method and Description
`boolean` `aggregateResults()`
A function can make calculation on several records before returning a result.
`Object` ```execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iParams, OCommandContext iContext)```
Process a record.
`Object` `getResult()`
Only called when function aggregates results after all records have been passed to the function.
`String` `getSyntax()`
Returns a convenient SQL String representation of the function.
`Object` `mergeDistributedResult(List<Object> resultsToMerge)`
This method correspond to distributed query execution
• ### Methods inherited from class com.orientechnologies.orient.core.sql.functions.OSQLFunctionAbstract

`config, filterResult, getDistributedStorageId, getMaxParams, getMinParams, getName, getSingleItem, getSingleProperty, returnDistributedResult, setResult, shouldMergeDistributedResult, toString`
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
• ### Field Detail

• #### NAME

`public static final String NAME`
Constant Field Values
• ### Constructor Detail

• #### OSQLFunctionVariance

`public OSQLFunctionVariance()`
• #### OSQLFunctionVariance

```public OSQLFunctionVariance(String iName,
int iMinParams,
int iMaxParams)```
• ### Method Detail

• #### execute

```public Object execute(Object iThis,
OIdentifiable iCurrentRecord,
Object iCurrentResult,
Object[] iParams,
OCommandContext iContext)```
Description copied from interface: `OSQLFunction`
Process a record.
`iCurrentRecord` - : current record
`iCurrentResult` - TODO
`iParams` - : function parameters, number is ensured to be within minParams and maxParams.
`iContext` - : object calling this function
Returns:
function result, can be null. Special cases : can be null if function aggregate results, can be null if function filter results : this mean result is excluded
• #### aggregateResults

`public boolean aggregateResults()`
Description copied from interface: `OSQLFunction`
A function can make calculation on several records before returning a result.

Example of such function : sum, count, max, min ...

The final result of the aggregation is obtain by calling `OSQLFunction.getResult()`

Specified by:
`aggregateResults` in interface `OSQLFunction`
Overrides:
`aggregateResults` in class `OSQLFunctionAbstract`
Returns:
true if function aggregate results
• #### getResult

`public Object getResult()`
Description copied from interface: `OSQLFunction`
Only called when function aggregates results after all records have been passed to the function.
Specified by:
`getResult` in interface `OSQLFunction`
Overrides:
`getResult` in class `OSQLFunctionAbstract`
Returns:
Aggregation result
• #### mergeDistributedResult

`public Object mergeDistributedResult(List<Object> resultsToMerge)`
Description copied from interface: `OSQLFunction`
This method correspond to distributed query execution
Specified by:
`mergeDistributedResult` in interface `OSQLFunction`
Overrides:
`mergeDistributedResult` in class `OSQLFunctionAbstract`
Parameters:
`resultsToMerge` - is the results that comes from different nodes
Returns:
is the valid merged result
• #### getSyntax

`public String getSyntax()`
Description copied from interface: `OSQLFunction`
Returns a convenient SQL String representation of the function.

Example :

```  myFunction( param1, param2, [optionalParam3])
```

This text will be used in exception messages.

Returns:
String , never null.