# `variance`

## Description

Returns the variance of a numerical expression within a group.

- Variance measures how far values spread out from the mean.
- Best applied when a complete dataset is available (for sampled data, use `sample_variance`).

## Syntax

```dataprime
variance(expression: number): number
```

## Arguments

| Name       | Type   | Required | Description                                     |
| ---------- | ------ | -------- | ----------------------------------------------- |
| expression | number | **true** | Numerical expression whose variance is computed |

## Example

**Use case: Compute variance of trace durations**

Suppose you want to calculate how much the duration of each operation varies across traces.

### Example data

```json
{ "operationName": "brokenPrinter", "duration": 20000 },
{ "operationName": "checkout", "duration": 250000 },
{ "operationName": "MalfunctioningDatabase", "duration": 900000 },
{ "operationName": "hipstershop.EmailService", "duration": 10000 },
{ "operationName": "checkout", "duration": 800000 },
{ "operationName": "MalfunctioningDatabase", "duration": 300000 },
{ "operationName": "brokenPrinter", "duration": 700000 },
{ "operationName": "hipstershop.EmailService", "duration": 10100 },
{ "operationName": "checkout", "duration": 1200000 },
{ "operationName": "MalfunctioningDatabase", "duration": 100000 },
{ "operationName": "brokenPrinter", "duration": 1000000 },
{ "operationName": "hipstershop.EmailService", "duration": 9950 },
{ "operationName": "MalfunctioningDatabase", "duration": 600000 },
{ "operationName": "checkout", "duration": 400000 },
{ "operationName": "brokenPrinter", "duration": 400000 },
{ "operationName": "hipstershop.EmailService", "duration": 10050 },
{ "operationName": "MalfunctioningDatabase", "duration": 500000 },
{ "operationName": "brokenPrinter", "duration": 800000 },
{ "operationName": "checkout", "duration": 600000 },
{ "operationName": "hipstershop.EmailService", "duration": 10200 }
```

### Example query

```dataprime
groupby $l.operationName aggregate variance($m.duration) as duration_variance
```

### Example output

| operationName            | duration_variance  |
| ------------------------ | ------------------ |
| checkout                 | 58572892530.596344 |
| MalfunctioningDatabase   | 67834543984.789665 |
| brokenPrinter            | 110859632383.16512 |
| hipstershop.EmailService | 378315.86960154894 |
