## 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