Ich habe eine Tabelle:
%Vor%Ich möchte die Summe aller Produkte für jede Gruppe von "Schlüssel" finden und an jede Zeile anhängen. Zum Beispiel für Schlüssel = 1, finde die Summe der Kosten aller Produkte (20 + 10 + 5 = 35) und hänge dann das Ergebnis an alle Zeilen an, die dem Schlüssel = 1 entsprechen. Also Endergebnis:
%Vor% Ich würde es vorziehen, dies ohne Verwendung eines Unterjoins zu tun, da dies ineffizient wäre. Meine beste Idee wäre, die Funktion over
in Verbindung mit der Funktion sum
zu verwenden, aber ich kann es nicht zum Laufen bringen. Mein bester Versuch:
Ich habe mir die Dokumentation angesehen aber da bin ich so kryptisch, dass ich keine Ahnung habe, wie ich es herausfinden soll. Ich verwende Hive v0.12.0, HDP v2.0.6, HortonWorks Hadoop Verteilung.
Die Summe der Analysefunktionen ergibt kumulierte Summen. Zum Beispiel, wenn Sie:
%Vor%dann würdest du bekommen:
%Vor%was anscheinend nicht das ist, was Sie wollen.
Stattdessen sollten Sie die Aggregationsfunktion sum zusammen mit einem Self-Join verwenden, um dies zu erreichen:
%Vor%Die obige Tabelle sah wie
aus %Vor%Der Benutzer wollte eine Tabelle mit den Gesamtkosten wie folgt
%Vor%Dafür haben wir die folgende Abfrage verwendet
%Vor%So weit, so gut. Ich möchte eine Spalte mehr, zähle das Vorkommen jedes Landes
%Vor%Daher habe ich die folgende Abfrage verwendet
%Vor%Leider funktioniert das nicht. Ich bekomme einen kryptischen Fehler. Um einen Fehler in meiner Anfrage auszuschließen, möchte ich fragen, ob ich etwas falsch gemacht habe. Danke
Diese Abfrage gibt mir ein perfektes Ergebnis
select key, product_code, cost, sum(cost) over (partition by key) as total_costs from zone;
Tags und Links hadoop hortonworks-data-platform hive hiveql