In einer Hive-Tabelle habe ich tatsächliche Verkäufe und Prognosen für sie. so dass die Daten wie folgt aussehen:Operation über gruppierte Spalte Hive
item date salesDol salesUnit predictionU
1 1/1/2016 5.99 1 0.9
1 1/1/2016 5.49 1 0.9
1 2/1/2016 5.99 1 0.84
1 3/1/2016 6.04 1 0.92
Für den Durchschnittspreis der Berechnung ich tun:
create table data1 as
select item, date, predictionU from data
JOIN
(select sum(salesDol) as totDol, sum(salesUnit) as totUnit from data);
Also in jeder Zeile Ich habe totDol
und totUnit
. Um nun endgültig hochgerechneten Verkaufseinheiten zu erhalten Ich versuche:
create table data2 as
select item, date, sum(predictionU)*totDol/totUnit from data1 group by item, date;
dann bekomme ich Fehler sagen:
FAILED: SemanticException [Error 10025]: Expression nicht in GROUP BY-Taste 'totDol'
Ich bin nicht in der Lage zu verstehen, warum Hive mich dazu auffordert, totDol
auch in der Gruppenklausel aufzunehmen. Irgendein Vorschlag.
ich vereinfachte Version der meine Abfrage gefragt. Wenn ich 'sum (case wenn sls_type_c = 'regulär', dann tot_sales else 0 end) als regulär_sls 'habe, dann muss ich einfach' sum (tot_sales) über (partition by sls_type_c = 'regulär') als regulary_sls' ausführen. richtig? @abhiieor – abhiieor
Nein, Sie würden 'sum (Fall, wenn sls_type_c = 'regulär' dann tot_sales sonst 0 Ende) über()' für die Summe aller "regulären" Verkäufe. –