Ich habe zwei Tabellen: area_costs und products_shipped.Zusammenfassen von Daten und JOIN zwei Tabellen ohne entsprechenden Schlüssel
area_costs enthält die Kosten pro Bereich, d. H. Kurierkosten, Transportkosten.
---------------------
|year|week|area|cost|
---------------------
Die Tabelle products_shipped enthält alle Produkte, die an Kunden ausgeliefert wurden:
-------------------------------------------------------
|product_id|area|customer_id|drop_id|date_id|product_price|
-------------------------------------------------------
Nun, wie oben erwähnt, gibt es keine passenden Schlüssel, um diese Tabellen zu verknüpfen. Ich möchte eine Berechnung durchführen, die im Wesentlichen die Kosten pro Fläche berechnet und sie durch die Anzahl der Tropfen pro Fläche teilt, um den Durchschnittswert pro Tropfen zu erhalten. Wenn alle Informationen in einer Tabelle zur Verfügung ist, würde ich wahrscheinlich ein:
SELECT area, SUM(cost)/COUNT(drop_id) AS spent_per_drop FROM full_table GROUP by AREA
Gibt es eine Möglichkeit, dies zur Verfügung gestellt mit den Informationen zu tun?
Beispieldaten:
area_costs:
---------------------
|year|week|area|cost|
|2016|20 |mel |5000|
|2016|20 |syd |7500|
|2016|20 |bri |3000|
|2016|21 |mel |5200|
|2016|21 |syd |7400|
---------------------
products_shipped:
-----------------------------------------------------
|product_id|area|customer_id|drop_id |date_id |
|515 |syd |100 |515-syd-100-01|20160607|
|515 |syd |102 |515-syd-102-12|20160607|
|508 |mel |103 |508-mel-103-03|20160607|
-----------------------------------------------------
Lassen Sie uns sagen, dass ich eine SUM tun() auf Woche 20 in der area_costs Tabelle:
SELECT area, SUM(cost_actual) FROM area_costs GROUP BY area
Ich werde 75 bekommen 00 für Syd. Ich möchte das durch die Anzahl von drop_id in der Tabelle products_shipped teilen, die in den Beispieldaten gibt mir die Anzahl von 2. Daher sollte das Ergebnis 7500/2 = 3750.
Ich kann dies in 2 Abfragen tun , indem man beide Aggregate getrennt erhält und dann die Ergebnisse teilt, aber das ist keine flexible Lösung.
Meine Frage ist: Ist es möglich, dies in einer Abfrage zu tun?
Danke für alle Antworten.
Wenn Sie keinen übereinstimmenden Schlüssel haben, ist keine Berechnung erforderlich. Sie scheinen ein Feld "Bereich" in beiden zu haben. –
Ist die gemeinsame Spalte in beiden Tabellen nicht 'Bereich'? Es wäre besser, wenn Sie einige Beispieldaten geben könnten, die die von Ihnen erwartete Ausgabe erklären. – Utsav
Entschuldigung, vergessen Sie dies zu sagen - die area_costs enthält Werte in den Bereichen, die nicht unbedingt tatsächliche Bereiche in der Tabelle products_shipped sind; betrachte meine Berechnung leider als voreingenommen, wenn ich die Fläche als gemeinsames Feld verwende. – Adrian