Neo4j 包含循环的路径

Neo4j 包含循环的路径,neo4j,Neo4j,退货客户的订单与他们在商店的第一次订单相比有多大?这是我目前为止最好的一次。电子邮件表示购物者的ID match (e:Email)--(o:Order)--(s:Shop {domain:"shop"})--(p:Order)--(e) where o.created_at<p.created_at return avg(log(toFloat(p.total_price_usd)/toFloat(o.total_order_price))); match(e:Email)-(o:

退货客户的订单与他们在商店的第一次订单相比有多大?这是我目前为止最好的一次。电子邮件表示购物者的ID

match (e:Email)--(o:Order)--(s:Shop {domain:"shop"})--(p:Order)--(e) 
where o.created_at<p.created_at 
return avg(log(toFloat(p.total_price_usd)/toFloat(o.total_order_price)));
match(e:Email)-(o:Order)-(s:Shop{domain:Shop})-(p:Order)-(e)

其中o.created_at此查询显示了一种获取再订购总计与初始订单总计比率的方法。它首先计算每个电子邮件节点的平均比率,然后计算这些平均值的平均值

MATCH (e:Email)--(o:Order)--(s:Shop {domain:"shop"})
WITH e, o
ORDER BY o.created_at
WITH e, COLLECT(o.total_price_usd) AS totals, COUNT(o) AS nOrders
WHERE nOrders >= 2
WITH e, apoc.coll.sum(TAIL(totals)) / (nOrders-1) / HEAD(totals) AS ratio
RETURN AVG(ratio) AS result;
orderby
子句按创建时间对每个电子邮件节点的订单进行排序,以标识初始订单。
WHERE
子句删除只有一个订单的电子邮件节点。APOC函数是计算集合总和的一种方便方法