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