Ich habe eine Tabelle namens spending
(eigentlich in BigQuery, obwohl ich glaube, dass das nicht unbedingt relevant für diese Frage ist), die etwa 2,9 GB und 19 Millionen Zeilen ist.Wie führe ich eine Unterabfrage durch, um eine Tabelle in zwei Gruppen aufzuteilen?
Die Datenstruktur ist wie folgt:
product,org,spend,to_include,proportion_overseas
----------------------------------
SK001,03V,"Yes",0.1
SK002,03V,2.4,"Yes",0.1
SK001,O3T,66.1,"No",0.47
SK002,03T,87.1,"No",0.47
SK001,04C,16.1,"Yes",0
SK002,04C,27.1,"Yes",0
...
Für Informationen, es leicht denormalised ist, dass to_include
und proportion_overseas
sind tatsächlich Eigenschaften jeder Organisation.
Jetzt möchte ich zur Arbeit, für jedes Produkt:
- die Gesamtmenge, dass alle Organisationen ohne Übersee-Ausgaben für das Produkt ausgegeben, und
- die Gesamtmenge, dass alle Organisationen mit Nicht-Null Auslandsausgaben für dieses Produkt ausgegeben.
Ich möchte auch nur in dieser Berechnung nur Zeilen enthalten, wo to_include='Yes'
.
Ich bin mir nicht sicher, was der beste Ansatz ist, dies in SQL zu tun. Es macht mir nichts aus, ob ich am Ende mit zwei oder einem Tisch komme.
Ich weiß, wie alle Ausgaben von Code zu bekommen, für alle relevanten Zeilen:
SELECT product, SUM(spend)
FROM spending
WHERE to_include='Yes'
GROUP BY product;
Aber was ich nicht weiß, ist, wie jede Zeile in zwei Gruppen aufgeteilt: eine Gruppe, in der proportion_overseas=0
und eine Gruppe wo proportion_overseas>0
.
Ich glaube nicht, 'Unterabfrage' ist der richtige Begriff, also weiß ich nicht wirklich, wofür Google!
Brilliant, danke! – Richard