如何找到每场比赛的前10名?
How to find top 10 sum of each match?
我是说如果我有几个X和几个Y
我做了这样的比赛:
X -[ W ]-> Y
X和Y由几个W相关(同一对(X,Y)之间可以有多个W)
我希望每个 Y 的前十名 X 具有 属性 总和(W.property)
如果我return
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
的值。如果你打算这样做,你甚至可以将地图结构更改为这样的数组:
collect([total, X])[0..10]
我是说如果我有几个X和几个Y 我做了这样的比赛:
X -[ W ]-> Y
X和Y由几个W相关(同一对(X,Y)之间可以有多个W)
我希望每个 Y 的前十名 X 具有 属性 总和(W.property)
如果我return
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
的值。如果你打算这样做,你甚至可以将地图结构更改为这样的数组:
collect([total, X])[0..10]