gpt4 book ai didi

algorithm - Neo4j 运行总计

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:42:25 25 4
gpt4 key购买 nike

我是 Neo4j 的新手,我想为一组匹配的节点创建一个运行总计。这是我的

MATCH n RETURN REDUCE(shares = 1000, p IN COLLECT(n) | shares - p.shares)

这只是减少份额并显示单个结果,但我期待的是:

shares  total
100 100
100 200
100 300

最佳答案

是的,您可以这样做,但您的节点上需要一个 itemID 或类似的东西,以便为它们提供排序,否则您无法进行累计。它的工作原理如下:

MATCH (f:F) 
WITH f
OPTIONAL MATCH (g:F)
WHERE g.itemID<f.itemID
RETURN f.itemID, f.shares, sum(g.shares) + f.shares
ORDER BY f.itemID ASC;

在这里,我假设您在每个节点上都有一个 itemID。这是必要的,因为如果您不知道哪些节点先于或少于其他节点,则无法计算运行总数。但是,如果您确实有一个像 itemID 这样的字段,那么您将对所有 itemID 小于您正在查看的项目的项目进行额外的可选匹配,然后对这些份额求和。这提供了准确的运行总计。

虽然这不是一个非常有效的查询,因为您将求和并不断重新求和。假设您有 4 个节点;第一个算不了什么。第二个总和。第三次求和 2(第二次求和)。第四加三(第三次加一,第二次加一)。因此,需要做很多额外的工作。

我们在这里做的是绕过没有可变变量值的 hack。如果我需要做这个查询,我通常会从 java/javascript/python/whatever 做。我可能只是获取 shares 值并自己在 cypher 之外计算运行总数。

关于algorithm - Neo4j 运行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com