ich eine Tabelle mit dem Schema haben, wie unten dargestellt:erhalte eine Fehlermeldung, während ein Hive Abfrage ausführt, die eine Unterabfrage in der FROM-Klausel beinhaltet
CREATE TABLE Table1 (`membertype` varchar(1));
INSERT INTO Table1 (`membertype`)
VALUES
('Y'),('H'),('U'),('W'),('W'),('W'),('H'),('H'),('U'),
('U'),('P'),('P'),(''),('P'),('P'),('P'),(''),('W'),
('Y'),('Y'),('Y'),('H'),('D'),('D'),('D'),('D'),('H'),
('W'),('W');
Was ich versuche zu erreichen, ist die Anzahl der jeweils zu bekommen Geben Sie die Spalte und ihren Prozentsatz in die Gesamtzahl der Typen in der Spalte ein.
ich die folgende Abfrage in MYSQL getestet und bekam das gewünschte Ergebnis:
select (case when m.membertype='Y' then 'Young Adult'
when m.membertype='H' then 'Head'
when m.membertype='W' then 'Spouse'
when m.membertype='P' then 'Aged Parent'
when m.membertype='U' then 'Unknown'
when m.membertype='D' then 'Deceased' else 'No Match' end) as type,
count(*) as typecount,
count(*)/t.total*100 as percentage from Table1 as m,
(select count(*) as total from Table1) as t group by membertype;
type typecount percentage
No Match 2 6.8966
Deceased 4 13.7931
Head 5 17.2414
Aged Parent 5 17.2414
Unknown 3 10.3448
Spouse 6 20.6897
Young Adult 4 13.7931
**
**
Die gleiche Abfrage schlägt mit der unten in HIVE Fehler:
select (case when h.member='Y' then 'Young Adult'
when h.member='H' then 'Head'
when h.member='W' then 'Spouse'
when h.member='P' then 'Aged Parent'
when h.member='U' then 'Unknown'
when h.member='D' then 'Deceased' else 'No Match' end) as type,
count(*) as typecount,
count(*)/t.total*100 as percentage from hhinfo as h,
(select count(*) as total from hhinfo) as t group by member;
FAILED: SemanticException [Error 10025]: Line 1:277 Expression not in GROUP BY key 'total'
Was fehlt mir hier? Jede Hilfe wäre willkommen.
hinzufügen Haben Sie versucht, explizit by' Klausel 'total' zum' Gruppe hinzufügen? '... als t Gruppe für Mitglied, total' –
Wie dumm von mir .. Das hat den Trick gemacht. Vielen Dank @JaimeCr :) –