@akretschmer
zu 1: ich weis, aber ich dachte es hilft das word subquery im title zu haben für spätere suchen.
zu 2: natürlich nicht, da beim group by wie geschrieben im select bereich nur felder angegeben werden dürfen die auch im group by enthalten sind.
zu 3: 8.3 (debian 5.0)
bei mysql hätte ich sowas
SELECT DISTINCT ON (firstname_simplified, lastname_simplified, street_simplified, housenumber, zipcode, city_simplified)
gender, firstname, lastname, street, housenumber, zipcode, city, nationality, email, city, ip, kek, lp, created_at
FROM datas WHERE ip <> '' ORDER BY created_at DESC
gemacht das führt aber zu einem
ERROR: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
oder alternative
SELECT gender, firstname, lastname, street, housenumber, zipcode, city, nationality, email, city, ip, kek, lp, created_at
FROM datas WHERE ip <> '' GROUP BY firstname_simplified, lastname_simplified, street_simplified, housenumber, zipcode, city_simplified ORDER BY created_at DESC
da kommt aber dann dieser fehler:
ERROR: column "datas.gender" must appear in the GROUP BY clause or be used in an aggregate function
beides hatte so in mysql geklappt.
Die Aufgabenstellung:
Entferne alle Dubletten, aber nehme bei den Dubletten nur den neusten.
Daher meine Idee:
- Ich nehme die Daten und sortiere die nach Datum. (Neuster zuerst)
- Dann mache ich ein distinct. dieser dimmt immer nur den ersten gefundenen Datensatz. Somit immer den aktuellsten durch die Sortierung.
- Und sortiere die Daten nochmal nach Datum
Mein erstes SQL funktioniert, ist allerdings wenn man sich die 2 mysql Varianten anschaut, die auch gehen, sehr umständlich und daher ja meine Frage ob es nicht ordentlicher geht.