Gruppenweise Anzahl der Datensätze begrenzen
Thomas Uzunoff <[email protected]> Wed, 18 Dec 2013 16:10:21 +0100
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <[email protected]> |
Hallo, ich habe eine Tabelle wie diese mit den Spalten id und x. Spalte id ist PK. id | x ----------- 1 | a 3 | a 4 | b 5 | a 6 | b 10 | c 11 | b 12 | c 13 | d Hiervon möchte ich die id's haben, aber nur maximal zwei (oder eine definierte andere Anzahl) pro Wert in Spalte x. Welche id's pro Spalte x Wert selektiert wird, soll zufÀllig sein (bei normalen Abfragen mit LIMIT gibt die Datenbank gewöhnlich das selbe Ergebnis zurÃŒck, das ist aber nicht gewollt) Beispiel fÃŒr ein gÃŒltiges Ergebnis: id | x ----------- 1 | a 3 | a 4 | b 6 | b 10 | c 12 | c 13 | d aber auch das hier wÀre gÃŒltig: id | x ----------- 3 | a 5 | a 6 | b 11 | b 10 | c 12 | c 13 | d Was ich bisher herausgefunden habe ist, dass ich mit random() und einem LIMIT die Sortierung und das LIMIT angeben kann. Hier habe ich aber das Problem, dass das LIMIT fÃŒr die gesamte Abfrage gilt, und nicht fÃŒr jeden einzelnen Wert der Spalte x. Alle id's, deren Spalte x Wert maximal 2 mal vorkommt kann ich auch einfach selektieren. Wenn es aber mehr als 2 (oder eine zu definierende Anzahl) und dadurch die Anzahl der Ergebnisse eingeschrÀnkt werden mÃŒsste, komme nicht weiter. FÃŒr Lösungshinweise wÀre ich dankbar. GrÃŒÃe Thomas -- Sent via pgsql-de-allgemein mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-de-allgemein