# Aggregators

You can use aggregations at query time to summarize result data.

You can use aggregations at query time to summarize result data. The following aggregators are available:

## Numerical Aggregators

### Count

`count` computes the count of rows that match the filters.

``{ "type" : "count", "name" : <output_name> }``

### DoubleSum

`doubleSum` computes and stores the sum of values as a 64-bit floating point value.

The doubleSum aggregator takes the following properties:

• `name`: Output name for the summed value
• `fieldName`: Name of the metric column to sum over
``{ "type" : "doubleSum", "name" : <output_name>, "fieldName" : <metric_name> }``

### DoubleMin

`doubleMin` computes the minimum of all metric values and `Double.POSITIVE_INFINITY`.

``{ "type" : "doubleMin", "name" : <output_name>, "fieldName" : <metric_name> }``

### DoubleMax

`doubleMax` computes the maximum of all metric values and `Double.NEGATIVE_INFINITY`.

``{ "type" : "doubleMax", "name" : <output_name>, "fieldName" : <metric_name> }``

## Averaging Aggregators

### DoubleMean

`doubleMean` computes and returns the arithmetic mean of a column’s values as a 64-bit floating point value.

Warning: this aggregator is mean 😡😡

``{ "type" : "doubleMean", "name" : <output_name>, "fieldName" : <metric_name> }``

## Unique Aggregators

Theta sketches are a probabilistic data structure used for the count-distinct problem. They allow us to quickly count elements in sets, such as the set of users in the aggregation buckets

``````{
"fieldName": "clientUser",
"name": "count",
}``````

### Cardinality

`cardinality` computes the cardinality of a dimension.

``````{
"byRow": false,
"fields": ["clientUser"],
"name": "a0",
"round": true,
"type": "cardinality"
}``````

## First and Last Aggregators

### DoubleFirst

`doubleFirst` computes the first value of all metric values.

``{ "type" : "doubleFirst", "name" : <output_name>, "fieldName" : <metric_name> }``

### DoubleLast

`doubleLast` computes the last value of all metric values.

``{ "type" : "doubleLast", "name" : <output_name>, "fieldName" : <metric_name> }``

### StringFirst

`stringFirst` computes the first value of all metric values.

``{ "type" : "stringFirst", "name" : <output_name>, "fieldName" : <metric_name> }``

### StringLast

`stringLast` computes the last value of all metric values.

``{ "type" : "stringLast", "name" : <output_name>, "fieldName" : <metric_name> }``

## ANY Aggregators

### DoubleAny

Returns any value including null. This aggregator can simplify and optimize the performance by returning the first encountered value (including null).

doubleAny returns any double metric value.

``{ "type" : "doubleAny", "name" : <output_name>, "fieldName" : <metric_name> }``

### StringAny

Returns any value including null. This aggregator can simplify and optimize the performance by returning the first encountered value (including null).

stringAny returns any string metric value.

``{ "type" : "stringAny", "name" : <output_name>, "fieldName" : <metric_name> }``

## Misc

### Filtered

A filtered aggregator wraps any given aggregator, but only aggregates the values for which the given dimension filter matches.

This makes it possible to compute the results of a filtered and an unfiltered aggregation simultaneously, without having to issue multiple queries, and use both results as part of post-aggregations.

Note: If only the filtered results are required, consider putting the filter on the query itself, which will be much faster since it doesn’t require scanning all the data.

``````{
"type": "filtered",
"filter": {
"type": "and",
"fields": [
{
"type": "selector",
"dimension": "type",
"value": "InsightShown"
}
]
},
"aggregator": {