循环的路径在它

时间:2017-04-14 02:05:03

标签: 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)));

有没有明智的方法可以得到这个答案?

1 个答案:

答案 0 :(得分:0)

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

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;

ORDER BY子句按创建时间对每个电子邮件节点的订单进行排序,以识别初始订单。 WHERE子句删除只有1个订单的电子邮件节点。 APOC函数apoc.coll.sum是计算集合总和的便捷方式。