我收到了很多节点,其中一些节点在字段X
中具有相似的值,我希望通过不同的X
值进行选择,并使用所有热门节点(按其他字段排序{ {1}})及其所有属性。
示例:
ID | X | Y |名称
1 | A | 100 |大卫
2 | A | 10 |克里斯
3 | B | 5 |布拉德
4 | B | 25 |琥珀
应该返回:
1 | A | 100 |大卫
4 | B | 25 |琥珀
我设法通过不同的Y
获取列表:
X
我需要找到最常用的(MATCH (u:NodeType)
RETURN DISTINCT u.X
)最高值的节点来加入我的不同节点(现在只是一个属性)并返回整个节点(包含所有属性)。
答案 0 :(得分:0)
您正在寻找arg max式的查询。我最近answered a similar problem使用collect
:
MATCH (u:NodeType)
WITH u
ORDER BY u.Y DESC
WITH u.X AS X, collect(u)[0] AS u
RETURN u
这个想法如下:
Y
(降序)的值排序。X
的值隐式分组,对于聚合函数,使用collect
将其他值收集到列表中。列表的元素是节点(仍然按照Y
的降序存储。)[0]
的第一个元素。如果您在单独的子句中执行最后一步(而不是执行WITH
的{{1}}子句),则查询可能更容易阅读:
collect