2017-04-14 14 views
0

店舗での最初の注文と比較して返品する顧客の注文はどれぐらいですか?これは今まで私が持っていた最高のものです。 Emailは買い物客の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

このクエリは、並べ替え合計と初期注文合計の比率を取得する方法の1つを示しています。最初に電子メールノードごとの平均比率を計算し、平均の平均を計算します。

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句は、最初の1を識別するために、作成時刻でのメールノードあたりの注文を並べ替えます。 WHERE句は、1つの注文しか持たない電子メールノードを削除します。 APOC関数apoc.coll.sumは、コレクションの合計を計算するのに便利な方法です。

関連する問題