
我有两种类型的节点(游戏和玩家)和一种关系(已播放)。
PLAYED关系具有属性“点”。
样本数据:
玩家(309274)获得10分
玩家(309275)获得20分
玩家(309276)获得30分
玩家(309277)获得40分
玩家(309278)获得50分
我想计算玩家 309278 的排名,即5从密码查询。有人可以在这里帮助我生成密码查询吗?
MATCH (p:Player)-[pl:PLAYED]->(:Game {id:{game-id}})
RETURN p.name
ORDER BY pl.score desc
Run Code Online (Sandbox Code Playgroud)
那么行号就是您的排名,客户可以轻松计算
访问某个等级:
MATCH (p:Player)-[pl:PLAYED]->(:Game {id:{game-id}})
RETURN p.name
ORDER BY pl.score desc
SKIP 4 LIMIT 1
Run Code Online (Sandbox Code Playgroud)
要计算排名,您可能会执行以下操作(效率不高):
MATCH (p:Player)-[pl:PLAYED]->(:Game {id:{game-id}})
WITH p,pl
ORDER BY pl.score desc
// create a a collection
WITH collect(p) as players
UNWIND reduce(acc=[],idx in range(0,size(players)-1) |
acc + [idx+1,players[idx]]) as player_rank
RETURN player_rank
Run Code Online (Sandbox Code Playgroud)