Gruppenweise Anzahl der Datensätze begrenzen

From: Thomas Uzunoff <postgresql(at)grizzlycrm(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Gruppenweise Anzahl der Datensätze begrenzen
Date: 2013-12-18 15:10:21
Message-ID: 52B1BADD.1070707@grizzlycrm.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

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

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Kretschmer - internet24 GmbH 2013-12-18 15:15:04 AW: [pgsql-de-allgemein] Gruppenweise Anzahl der Datensätze begrenzen
Previous Message Andreas Kretschmer 2013-12-06 16:34:22 Job in München