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
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 |