Impala Fehler: AnalysisException: wählen Sie Liste Ausdruck nicht erzeugt durch aggregation Ausgang (fehlt die GROUP BY-Klausel?):
Dies ist mein Erster Beitrag. hoffe, ich werde klar sein 🙂
Ich versuche zu laufen impala (mit Farbton), wird die nächste Abfrage in der 2 version.
Version 1 (Gruppe 1):
SELECT payment_method,
(CASE WHEN price <= 1000 AND country = 'israel' THEN (price+50+0.18*price)/count(Distinct payment_token)/100
WHEN price <= 1000 AND country <> 'israel' THEN (price+50)/count(Distinct payment_token)/100
WHEN price > 1000 AND country = 'israel' THEN (price+0.05*price+0.18*price)/100
ELSE (price+0.05*price)/count(Distinct payment_token)/100
END) as ASP
FROM traffic_db.traffic_parq
WHERE year = 2016 AND month = 1
Group by 1
Error 1: AnalysisException: select list expression not produced by aggregation output (missing from GROUP BY clause?): CASE WHEN price... (rest of case when statment)
Version 2 (group by 1,2):
SELECT payment_method,
(CASE WHEN price <= 1000 AND country = 'israel' THEN (price+50+0.18*price)/count(Distinct payment_token)/100
WHEN price <= 1000 AND country <> 'israel' THEN (price+50)/count(Distinct payment_token)/100
WHEN price > 1000 AND country = 'israel' THEN (price+0.05*price+0.18*price)/100
ELSE (price+0.05*price)/count(Distinct payment_token)/100
END) as ASP
FROM traffic_db.traffic_parq
WHERE year = 2016 AND month = 1
Group by 1,2
Error: AnalysisException: GROUP BY expression must not contain aggregate functions: 2
Ich weiß nicht, was das problem zu sein.
HINWEIS: Wenn ich eine CASE-WHEN
Aussage mit nicht-berechnete Werte - es funktioniert gut (wenn ich das group by auch durch den case-when-Anweisung).
Hat jemand auf diese Art ein problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem mit dieser Abfrage:
Ist nicht wirklich die
GROUP BY
- Klausel. Es ist die zusätzlichen Spalten in derselect
nicht-aggregation. Sie konnte es lösen mit:(Hinweis: ich weiß nicht, ob Impala können Sie spaltenaliasnamen in der
group by
.) Der Schlüssel ist das hinzufügen der zusätzlichen unaggregated Spalten.So, das mag die Absicht der Abfrage. Oder, möglicherweise möchten Sie bedingte aggregation:
Wenn ich raten müsste, dies ist, was Sie zu tun versuchen.
count()
). Sie müssen entweder mit der bedingten aggregation (wie in dem zweiten der meine Abfragen), oder trennen Sie die Spalten im Ausdruck enthalten, werden nicht aggregiert. Es ist einfach etwas, dass Sie fehlen; irgendwie sind Sie overcomplicating das Problem.