2017-04-14 5 views
0

Wie groß sind Bestellungen von wiederkehrenden Kunden im Vergleich zu ihrer ersten Bestellung in einem Geschäft? Das ist das Beste, was ich bisher habe. E-Mail steht für die ID eines Kunden.Pfad mit Schleife drin

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))); 

Gibt es eine kluge Möglichkeit, diese Antwort zu erhalten?

Antwort

0

Diese Abfrage zeigt eine Möglichkeit, das Verhältnis von Nachbestellmengen zu Erstauftragssummen zu ermitteln. Es berechnet zunächst das durchschnittliche Verhältnis pro E-Mail-Knoten und berechnet dann den Durchschnitt dieser Durchschnittswerte.

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; 

Die ORDER BY Klausel sortiert die Aufträge per E-Mail Knoten durch die Erstellungszeit, die ersten ein zu identifizieren. Die WHERE-Klausel löscht E-Mail-Knoten, die nur eine Reihenfolge haben. Die APOC-Funktion apoc.coll.sum ist eine bequeme Möglichkeit, die Summe einer Sammlung zu berechnen.

Verwandte Themen