apoc.agg.statistics
Function APOC Core
apoc.agg.statistics(value,[percentiles = 0.5,0.75,0.9,0.95,0.99]) - returns numeric statistics (percentiles, min,minNonZero,max,total,mean,stdev) for values
Signature
apoc.agg.statistics(value :: NUMBER?, percentiles = [0.5, 0.75, 0.9, 0.95, 0.99] :: LIST? OF FLOAT?) :: (MAP?)Input parameters
| Name | Type | Default | 
|---|---|---|
| value | NUMBER? | null | 
| percentiles | LIST? OF FLOAT? | [0.5, 0.75, 0.9, 0.95, 0.99] | 
Usage Examples
The examples in this section are based on the following sample graph:
CREATE (TopGun:Movie {title:"Top Gun", released:1986, tagline:'I feel the need, the need for speed.'})
CREATE (SleeplessInSeattle:Movie {title:'Sleepless in Seattle', released:1993, tagline:'What if someone you never met, someone you never saw, someone you never knew was the only someone for you?'})
CREATE (ThatThingYouDo:Movie {title:'That Thing You Do', released:1996, tagline:'In every life there comes a time when that thing you dream becomes that thing you do'})
CREATE (TheDevilsAdvocate:Movie {title:"The Devil's Advocate", released:1997, tagline:'Evil has its winning ways'})
CREATE (AsGoodAsItGets:Movie {title:'As Good as It Gets', released:1997, tagline:'A comedy from the heart that goes for the throat.'})
CREATE (YouveGotMail:Movie {title:"You've Got Mail", released:1998, tagline:'At odds in life... in love on-line.'})
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (SnowFallingonCedars:Movie {title:'Snow Falling on Cedars', released:1999, tagline:'First loves last. Forever.'})
CREATE (JerryMaguire:Movie {title:'Jerry Maguire', released:2000, tagline:'The rest of his life begins now.'});
CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})We can find the release year of movies for different statistical measures, by running the query below:
MATCH (movie:Movie)
RETURN apoc.agg.statistics(movie.released) AS stats;| stats | 
|---|
| {total: 10, min: 1986, minNonZero: 1986.0, max: 2003, mean: 1996.8,  | 
We can expand the map of values to have one key per row by using the UNWIND clause on the keys of the map:
MATCH (movie:Movie)
WITH apoc.agg.statistics(movie.released) AS stats
UNWIND keys(stats) AS key
RETURN key, stats[key] AS value;| key | value | 
|---|---|
| "total" | 10 | 
| "min" | 1986 | 
| "minNonZero" | 1986.0 | 
| "max" | 2003 | 
| "mean" | 1996.8 | 
| "0.5" | 1997 | 
| "0.99" | 2003 | 
| "0.75" | 1999 | 
| "0.9" | 2000 | 
| "0.95" | 2003 | 
| "stdev" | 4.3772137256478585 | 
By default, the function will return the 0.5, 0.75, 0.9, 0.95, and 0.99 percentiles, but we can pass in our own percentiles (2nd parameter):
MATCH (movie:Movie)
WITH apoc.agg.statistics(movie.released, [0.1, 0.25]) AS stats
UNWIND keys(stats) AS key
RETURN key, stats[key] AS value;| key | value | 
|---|---|
| "total" | 10 | 
| "min" | 1986 | 
| "minNonZero" | 1986.0 | 
| "0.1" | 1986 | 
| "max" | 2003 | 
| "mean" | 1996.8 | 
| "0.25" | 1996 | 
| "stdev" | 4.3772137256478585 |