hallo zusammen,
ich komme bei einem query leider nicht weiter.
Vielleicht kann jemand weiterhelfen.
Meine Postgres Tabelle sieht folgendermassen aus:
CREATE TABLE Table1
("nummer" int, "nachname" varchar(5),"breite" varchar(5),"laenge" varchar(5), "vorname" varchar(9), "cash" numeric)
;
INSERT INTO Table1
("nummer", "nachname","breite","laenge","vorname", "cash")
VALUES
(2, 'Bert', '555','2','Brecht', 0.758),
(2, 'Harry','555','2', 'Belafonte', 0,758),
(3, 'Elvis','543','33', 'Presley', 0.357),
(3, 'Roy','543','31', 'Orbison', 0.357),
(4, 'Mark','52','33', 'Twain', 1.555),
(4, 'Ella','69','33', 'Fitz', 0.333);
Nun möchte ich die Reihen aufgrund der Nummer gruppieren, die Namen koalisieren und die Werte bei Cash addieren.
Soweit kein Problem. Jedoch möchte ich die Werte nur addieren wenn breite und länge in den gruppierten Reihen unterschiedlich sind.
falls nicht soll nicht addiert werden. Meine gewünschte Ausgabe wäre beispielsweise:
2 Bert Brecht 0,758
Harry Belafonte
…
4 Mark Twain 1,888
Ella Fitz
Ich denke ich benötige noch ein Distinct on, weiß aber leider nicht wie.
hier mein bisheriger quert:
SELECT DISTINCT
nummer,
array_to_string(array_agg(nachname|| ', ' ||coalesce(vorname, '')), '\n') as name,
sum (cash) as cash
FROM (
SELECT DISTINCT
nummer, vorname, nachname, cash
FROM Table1
) AS m
GROUP BY nummer
ORDER BY nummer;
Hier eine Fiddle zum bisherigen Stand:
SQL Fiddle
Besten Dank,
Tony