# Sum values with jq

Output the sum of a set of values by extracting a single field, converting to a number and adding them all together

Given a set of transactions in JSON format, I wanted to work out what the sum of a specific field was.

Here’s a slimmed down version of the data:

```
{
"transactions": [
{
"date": "07/01/21",
"plAmount": "4,000.00"
},
{
"date": "03/01/21",
"plAmount": "8,800.00"
},
{
"date": "02/01/21",
"plAmount": "1,000.00"
},
{
"date": "28/12/20",
"plAmount": "2,500.00"
}
]
}
```

Here’s how to sum the `plAmount`

field from the above data:

```
jq '[.transactions[].plAmount | gsub(",";"") | tonumber] | add'
# 16300
```

## Step by Step

The first step is to extract the `plAmount`

field from each entry:

```
jq '.transactions[].plAmount'
# "4,000.00"
# "8,800.00"
# "1,000.00"
# "2,500.00"
```

Next, convert all of these values to numbers by removing the `,`

and converting to integers

```
jq '.transactions[].plAmount | gsub(",";"") | tonumber'
# 4000
# 8800
# 1000
# 2500
```

Convert it to a list of numbers by wrapping it in `[]`

:

```
jq '[.transactions[].plAmount | gsub(",";"") | tonumber]'
# [
# 4000,
# 8800,
# 1000,
# 2500
# ]
```

Then finally call `add`

to sum those values:

```
jq '[.transactions[].plAmount | gsub(",";"") | tonumber] | add'
# 16300
```