e2 WITH e1, e2, count(e1) as ecount MATCH e-6ren">
gpt4 book ai didi

neo4j - Cypher——如何通过 WITH 管道携带变量

转载 作者:行者123 更新时间:2023-12-01 11:42:24 25 4
gpt4 key购买 nike

我有以下查询:

START e1=node:event(prop="0")
MATCH e1-[r:rbel]->e2
WITH e1, e2, count(e1) as ecount
MATCH e1-[:redge]->p<-[:redge]-e2
WITH p.element_type as Type, p.label as Label, (count(p)*100./ecount) as percentage
WHERE percentage > 20
RETURN Type, Label, ROUND(percentage) as Percentage

我正在尝试计算指定模式在具有 prop="0" 的事件中出现的次数占这些事件中出现的所有模式的百分比。

我收到以下错误:Unknown identifier 'ecount'

所以我在计算中用 count(ecount) 替换了 ecount,并且我知道这始终产生 100% 的 percentage不是真的。

我做错了吗?如何将ecount 的值携带到WITH 子句中并用于计算?

感谢任何帮助!

最佳答案

这个查询对你有用吗?每当我在 WITH 语句中组合 e1count(e1) 时,count(e1) 始终为 1 . 我认为这是因为当您也选择 e1count(e1) 聚合不再起作用。您可以省略 e1count(e1)

START e1=node:event(prop="0")
MATCH e1-[r:rbel]->e2
WITH e1, e2
MATCH e1-[:redge]->p<-[:redge]-e2
WITH p.element_type as Type, p.label as Label, (count(p)*100./count(e1)) as percentage
WHERE percentage > 20
RETURN Type, Label, ROUND(percentage) as Percentage

更新在试用了您提供的控制台设置后,我得到了以下查询:

START e1=node:node_auto_index(prop="0") 
MATCH e1-[r:rbel]->e2
WITH COLLECT(e2) AS e2collection, count(e1) AS cnt
MATCH e1-[:redge]->p<-[:redge]-(e2)
WITH p, COLLECT(e1) AS e1collection, cnt, e2collection
WITH p.name AS Name, cnt, count(p)*100/cnt AS Percentage
WHERE Percentage > 20
RETURN Name, Percentage

关于neo4j - Cypher——如何通过 WITH 管道携带变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451960/

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