2017-07-17 7 views
0

Was ich versuche, ist ein SUM-Fall erstellen, wie eine Summe in Excel. Welche ich in R ziehen werde, um weitere Analyse zu machen, aber ich dachte, es wäre schneller, diese Abfrage einmal in MySQL auszuführen und in R zu ziehen.Sumifs SQL-Tabelle Match Row Wert

Also in Excel funktioniert es mit =SUMIFS(I:I,H:H,"Shipping",G:G,G7,F:F, F7) (diese Formel ist in der "total_cost" Spalte.

Wo Spalte H die process ist, ist G die order_no, und F die parent_name

der Teil ich bin nicht sicher, ist, wie der Zeilenwert G7 unter dem gesamten Bereich & F7 anzupassen (oder selbst wenn das effizient ist, wenn man bedenkt, dass diese kleine db einige Millionen Zeilen * 45 Spalten hat, würde in diesem Beispiel die total_cost-Spalte ausgefüllt Mn für diese Zelle.

Also unten versuche ich die Gesamtkosten der Bestellungen pro Bestellnummer pro Elternteil zu bekommen. Alle Bestellungen haben Prozesse in ihnen (Kompilieren, Verpacken, Versand) mit Versand als das Ende. In der Spalte "total_cost" werden dann alle Kosten für die aktuellen Zeilen order_no und parent_name addiert, wenn der Prozess = Versand ist.

Ich bekomme eine "ungültige Verwendung der Gruppenfunktion" mit den folgenden. Ich habe versucht, This SUMIFS in SQL Post folgen, aber kann nicht scheinen, die GROUP BY in Arbeit zu passen.

UPDATE m.data 
    set total_cost = 
    IF(process = 'Shipping', 
        SUM(case when order_no = order_no 
         AND parent_name = parent_name 
          THEN sum(process_cost) else 0 END), "") 

Oder lassen Sie mich wissen, wenn Sie einen besseren Weg natürlich haben.

+0

Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve- for-was-scheint-zu-mir-eine-sehr-einfache-sql-Abfrage – Strawberry

Antwort

0

Sie ein Update verwenden könnte mit Innen von ORDER_NO

auf Summe Gruppe beitreten
update data 
inner join (
    select order_no , sum(process_cost) as my_sum 
    from data 
    group by order_no 
) t on t.order_no = data.order_no and data.process= 'Shipping' 
set total_cost = my_sum 
+0

Immer noch den gleichen Fehler. Aber von anderen Posts, die ich gelesen habe, scheint es, dass ich eine "HAVING" -Klausel brauche, obwohl ich nicht sicher bin, wo ich sie im Moment hinstellen soll. –

+0

zeigen Sie mir die genaue Fehlermeldung bitte – scaisEdge

+0

Fehler (kann) gefunden .. Antwort aktualisiert – scaisEdge