Neo4j聚合查询
Neo4j是一种图数据库,它支持多种聚合查询操作,包括计数(Count)、求和(Sum)、平均值(Average)、最小值(Min)、最大值(Max)、分组(Group by)等。
下面简单介绍Neo4j的表结构和样例数据:
表结构示例:节点包含标签和属性,关系包含类型和属性。
示例节点:Person(属性:name、age)、Movie(属性:title、release_year)
示例关系:ACTED_IN(属性:roles)、DIRECTED(属性:awards)
示例数据:
// 创建节点和关系
CREATE (:Person {name:'Tom Hanks', age:64})-[:ACTED_IN {roles:['Forrest Gump']}]->(:Movie {title:'Forrest Gump', release_year:1994})
CREATE (:Person {name:'Robert Zemeckis'})-[:DIRECTED {awards:3}]->(:Movie {title:'Forrest Gump', release_year:1994})
CREATE (:Person {name:'Gary Sinise', age:66})-[:ACTED_IN {roles:['Lt. Dan Taylor']}]->(:Movie {title:'Forrest Gump', release_year:1994})
CREATE (:Person {name:'Robin Wright', age:55})-[:ACTED_IN {roles:['Jenny Curran']}]->(:Movie {title:'Forrest Gump', release_year:1994})
CREATE (:Person {name:'James Cameron'})-[:DIRECTED {awards:4}]->(:Movie {title:'Titanic', release_year:1997})
以下是各种聚合查询的示例:
1. Count计数查询:
// 统计所有Person节点数量
MATCH (p:Person) RETURN COUNT(p) AS total
2. Sum求和查询:
// 统计所有Person节点的年龄总和
MATCH (p:Person) RETURN SUM(p.age) AS total_age
3. Average平均值查询:
// 统计所有Person节点的年龄平均值
MATCH (p:Person) RETURN AVG(p.age) AS avg_age
4. Min最小值查询:
// 找到年龄最小的Person节点
MATCH (p:Person) RETURN MIN(p.age) AS min_age
5. Max最大值查询:
// 找到年龄最大的Person节点
MATCH (p:Person) RETURN MAX(p.age) AS max_age
6. Group by分组查询:
// 按照电影的发行年份分组,统计每年的电影数量
MATCH (m:Movie) RETURN m.release_year AS year, COUNT(m) AS movie_count ORDER BY year
以上示例展示了Neo4j的一些常见聚合查询操作,详细的查询语法和更复杂的集成查询操作可以参考Neo4j的官方文档。