我正在向Neo4j
数据库发送查询,我想仅返回包含两个数字的项目 - tsneX
和tsneY
作为不同的“点”。因此,tsneX
可以等于tsneX
,但在这种情况下,第二个数字tsneY
不应该。这是我的疑问:
MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" })
RETURN ex.expr, c.tsneX, c.tsneY;
所以,我想要像男孩一样
MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" })
WITH DISTINCT (c.tsneX, c.tsneY) AS point
RETURN ex.expr, point;
示例:
ex.expr c.tsneX c.tsneY
1. 4 1.2 1.2
2. 5 2.1 3.3
3. 1 1.2 1.2
其中一个 - 需要删除第一个或第三个,因为它们的tsneX
和tsneY
坐标分别相等。所以,我希望只返回第一个和第二个,但是第三个被删除,因为ex.expr
在第一个中更高。
任何建议都将不胜感激。
答案 0 :(得分:1)
所以你想要一对[c.tsneX,c.tsneY],如果有更多结果和相同的点,你只需要高位ex.expr。这应该可以解决问题:
MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" })
RETURN [c.tsneX, c.tsneY] AS point, max(ex.expr) as expr
如果您希望将该点作为对象而不是列表,则可以执行以下操作:
{x:c.tsneX, y:c.tsneY} AS point
在任何一种情况下,max(ex.expr)
聚合函数都将确保剩余的非聚合值point
是不同的。