Sorting Neo4j cypher复杂的查询排序、计数、收集前求和

Sorting Neo4j cypher复杂的查询排序、计数、收集前求和,sorting,neo4j,cypher,collect,Sorting,Neo4j,Cypher,Collect,我是neo4j db的新手,刚开始学习,正在寻求帮助,因为我被卡住了。有可能在一个密码查询中得到它吗?怎么做 我的图形结构如下所示: (s:Store)-[r:RELEASED]->(m:Movie)<-[r1:ASSIGNED]-(cat:MovieCategorie) (s:Store)-[r:RELEASED]->(m:Movie)(m:Movie) 与s,m match(m)(m:Movie)好的,很快:D我终于拿到了 match (s:Store) with s mat

我是neo4j db的新手,刚开始学习,正在寻求帮助,因为我被卡住了。有可能在一个密码查询中得到它吗?怎么做

我的图形结构如下所示:

(s:Store)-[r:RELEASED]->(m:Movie)<-[r1:ASSIGNED]-(cat:MovieCategorie)
(s:Store)-[r:RELEASED]->(m:Movie)(m:Movie)
与s,m

match(m)(m:Movie)好的,很快:D我终于拿到了

match (s:Store) 
with s
match (s)-[r:PUBLISHED]->(m:Movie)
with s
match (s)<-[r2:ASSIGNED]-(cat:MovieCategorie)
with s, count(r2) as stylesCount, cat
order by stylesCount desc
return distinct s,  collect(distinct cat.name)[0..5] as topCategories
order by s.name
匹配(s:存储)
用s
比赛(s)-[r:PUBLISHED]->(m:Movie)
用s

匹配你应该提供一些样本数据和预期结果。不管怎样,我已经回答了你的第二个问题。谢谢你的回答,但如果我将m与语句一起传递,我的类别将不再排序,所有存储的总和结果都是错误的。我不明白为什么?我用我创建的样本数据集获得了正确的类别和汇总结果。您应该共享示例数据。我添加了示例数据,刚刚用它测试了您的漂亮查询,结果显示store3有100个视图,而store3只有一部电影(每部电影有50个视图)。你知道为什么吗?哦,有重叠的类别。我在电脑前会给你回电话的。太好了!非常感谢你。
MATCH (s:Store)
OPTIONAL MATCH (s)-[:RELEASED]->(m:Movie)<-[r:ASSIGNED]-(cat:MovieCategorie)
WITH s, COUNT(r) AS count, cat
ORDER BY  count DESC
RETURN c AS Store, COLLECT(distinct cat.name) AS `Top Categories`
ORDER BY Store.name
CREATE (s1:Store) SET s1.name = 'Store 1'
CREATE (s2:Store) SET s2.name = 'Store 2'
CREATE (s3:Store) SET s3.name = 'Store 3'

CREATE (m1:Movie) SET m1.title = 'Movie 1', m1.viewsCount = 50
CREATE (m2:Movie) SET m2.title = 'Movie 2', m2.viewsCount = 50
CREATE (m3:Movie) SET m3.title = 'Movie 3', m3.viewsCount = 50
CREATE (m4:Movie) SET m4.title = 'Movie 4', m4.viewsCount = 50
CREATE (m5:Movie) SET m5.title = 'Movie 5', m5.viewsCount = 50

CREATE (c1:MovieCategorie) SET c1.name = 'Cat 1'
CREATE (c2:MovieCategorie) SET c2.name = 'Cat 2'
CREATE (c3:MovieCategorie) SET c3.name = 'Cat 3'

CREATE (m1)<-[:ASSIGNED]-(c1)
CREATE (m1)<-[:ASSIGNED]-(c3)
CREATE (m2)<-[:ASSIGNED]-(c2)
CREATE (m3)<-[:ASSIGNED]-(c1)
CREATE (m3)<-[:ASSIGNED]-(c2)
CREATE (m3)<-[:ASSIGNED]-(c3)
CREATE (m4)<-[:ASSIGNED]-(c1)
CREATE (m4)<-[:ASSIGNED]-(c3)
CREATE (m5)<-[:ASSIGNED]-(c3)

CREATE (s1)-[:RELEASED]->(m1)
CREATE (s1)-[:RELEASED]->(m3)
CREATE (s1)-[:RELEASED]->(m4)
CREATE (s1)-[:RELEASED]->(m5)

CREATE (s2)-[:RELEASED]->(m1)
CREATE (s2)-[:RELEASED]->(m2)
CREATE (s2)-[:RELEASED]->(m3)
CREATE (s2)-[:RELEASED]->(m4)
CREATE (s2)-[:RELEASED]->(m5)

CREATE (s3)-[:RELEASED]->(m1)
MATCH (s:Store)-[:RELEASED]->(m:Movie)<-[r:ASSIGNED]-(cat:MovieCategorie)
with  s,count(r) as catCount,  cat
order by catCount desc
with s, collect( distinct cat.name)[0..5] as TopCategories
match (s)-[:RELEASED]->(m:Movie)
return s as Store, TopCategories, sum(m.viewsCount) as TotalViews
match (s:Store) 
with s
match (s)-[r:PUBLISHED]->(m:Movie)
with s
match (s)<-[r2:ASSIGNED]-(cat:MovieCategorie)
with s, count(r2) as stylesCount, cat
order by stylesCount desc
return distinct s,  collect(distinct cat.name)[0..5] as topCategories
order by s.name
MATCH (s:Store)-[:RELEASED]->(:Movie)<-[:ASSIGNED]-(cat:MovieCategorie)
WITH s, COUNT(cat) AS count, cat
ORDER BY s.name, count DESC
RETURN s.name AS Store, COLLECT(cat.name)[0..5] AS `Top Categories`
MATCH (s:Store)-[:RELEASED]->(m:Movie)<-[:ASSIGNED]-(cat:MovieCategorie)
WITH s, COUNT(cat) AS count, m, cat
ORDER BY s.name, count DESC
RETURN s.name AS Store, COLLECT(cat.name)[0..5] AS `Top Categories`, SUM(m.viewsCount) AS `Total Views`