 # Math with query results

Hello I am trying to do some math with my query results using Flux. Everything works fine until I try to calculate something with the results. I would like to divide divide `operational` by `nfaults`:

``````// Get all the data from the bucket filtered for FAULT_LASER
data = from(bucket: "plcview_4/autogen")
|> range(start: 2021-01-29T00:00:00.000Z, stop: now()) 				// regular time range filter
|> filter(fn: (r) => r._measurement == "FAULT_LASER") 				// filter for the measurement
|> elapsed(unit: 1ms, timeColumn: "_time", columnName: "duration") 	// calculate time difference between rows
|> yield(name: "data")
// returns data tables for every unique set of tags (workplace and equipmentNumber)

// Filter for all "No-Fault-Values" and sum their durations
operational = data
|> filter(fn: (r) => r._value == 0) 	// filter for all rows where FAULT_LASER = 0 --> No Faults
|> group() 							// group all data tables together
|> sum(column: "duration") 			// sum all the durations from all data tables
|> yield(name: "operational")

// Count the number of faults
nfaults = data
|> filter(fn: (r) => r._value == 1)	// filter for all rows where FAULT_LASER = 1 --> Faults
|> group()							// group all data tables together
|> count()							// count the number of records
|> yield(name: "nfaults")

// Calculate MTBF
mtbf = operational / nfaults

``````

Why do my calculations not work?

Hello @strittmm,
operational and nfaults are table streams, not individual values so you can’t simply divide them.
You would need to perform a join and then a map().
https://docs.influxdata.com/influxdb/cloud/reference/flux/stdlib/built-in/transformations/join/
https://docs.influxdata.com/influxdb/cloud/reference/flux/stdlib/built-in/transformations/map/

``````join(tables: {nfaults: nfaults, operational: operational}, on: ["_time"], method: "inner")
|> map(fn: (r) => ({ _value: r._value_operational / r._value_nfaults }))
``````

@Anaisdg thanks, but for some reason this did not work for me…
Instead I did this and it works just how I intended:

``````mtbf = data
|> reduce(
fn: (r, accumulator) => ({
operational: r.duration + accumulator.operational,
nFaults: accumulator.nFaults + 1
}),
identity: { operational: 0, nFaults: 0 }
)
|> map(fn: (r) => ({ _value: r.operational/ r.nFaults }))
``````
1 Like