回头客的订单与他们在商店的第一笔订单相比有多大?这是我迄今为止最好的。电子邮件代表购物者的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)));
有没有明智的方法可以得到这个答案?
答案 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是计算集合总和的便捷方式。