apoc.agg.median
语法 |
|
||
描述 |
返回所有非空 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要聚合的值。 |
|
返回 |
|
||
使用示例
本节示例基于以下示例图
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (TomH:Person {name:'Tom Hanks', born:1956})
CREATE (TheDevilsAdvocate:Movie {title:"The Devil's Advocate", released:1997, tagline:'Evil has its winning ways'})
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})
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 (YouveGotMail:Movie {title:"You've Got Mail", released:1998, tagline:'At odds in life... in love on-line.'})
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded)
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheDevilsAdvocate)
CREATE (TomH)-[:ACTED_IN {roles:['Joe Fox']}]->(YouveGotMail)
CREATE (TomH)-[:ACTED_IN {roles:['Sam Baldwin']}]->(SleeplessInSeattle)
CREATE (TomH)-[:ACTED_IN {roles:['Mr. White']}]->(ThatThingYouDo);
我们可以通过运行以下查询,找到每个人参演电影的发行年份中位数
apoc.agg.median
MATCH (p:Person)-[:ACTED_IN]->(movie)
RETURN p.name AS person, apoc.agg.median(movie.released) AS medianReleaseYear
Cypher 的 COLLECT 子查询和 CASE 表达式
MATCH (p:Person)
WITH p, COLLECT { MATCH (p)-[:ACTED_IN]->(movie) RETURN movie.released ORDER BY movie.released } AS releasedYears
WITH p.name AS name, releasedYears, size(releasedYears) AS size
RETURN name,
CASE size % 2
WHEN 1 THEN releasedYears[size / 2]
ELSE (releasedYears[size / 2 - 1] + releasedYears[size / 2]) / 2
END AS medianReleaseYear
| 人物 | 发行年份中位数 |
|---|---|
"基努·里维斯" |
1999.0 |
"汤姆·汉克斯" |
1996.0 |