我的意思是如果我有几个 X 和几个 Y 我做了这样的比赛:
X -[ W ]-> Y
X 和 Y 由几个 W 相关(相同对 (X,Y) 之间可以有多个 W)
对于每个具有属性 sum(W.property) 的 Y,我想要前十个 X
如果我回来
return Y , sum(W.property) , X order by sum(W.property) desc Limit 10
我刚得到 10,但我需要每个 Y,
有办法吗?
最佳答案
MATCH X -[ W ]-> Y
WITH Y, sum(W.property) AS total, X
ORDER BY total DESC
WITH Y, collect({sum: total, X: X})[0..10] AS values
UNWIND values AS value
RETURN Y, value.sum, value.X
您实际上可以跳过 UNWIND
并将第二个 WITH
更改为 RETURN
如果您同意将其作为大批。这会更有效一些,因为您不会一遍又一遍地重复 Y
的值。如果您打算这样做,您甚至可以将 map 结构更改为这样的数组:
collect([total, X])[0..10]
关于database - 如何找到每场比赛的前10名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35167609/