2010-12-01 9 views
2

Für jedes Elternteil, das existiert, möchte ich 1 Kind Zeile zufällig auswählen. Die Tabellenstruktur sieht wie folgt aus:Wie wählt man zufällige Probe mit SQL? (Bernoulli Trial)

parent 
    id 

child 
    parent_id 
    id 
    rank 

wo es 1..N Kind Aufzeichnungen für jeden Elternteil und Rang sind einzigartig pro Elternteil von 1 bis N geht

Die Ausgabe sollte wie:

parent child rank 
--------+-------+------- 
1  34  7 
2  56  8 
... 

Mit jedem Elternteil, der eine Kindreihe produziert. (Dies wird als Grundlage für die Bernoulli-Versuche dienen.)

(PostgreSQL hat eine Funktion random(), die eine Zahl zwischen 0 und 1 gibt)

Antwort

1

nicht vertraut überhaupt mit postgresql, aber vielleicht so etwas wie diese ?

SELECT DISTINCT ON (parent_id) parent_id as "parent", id as "child", rank 
FROM child c 
ORDER BY 
     parent_id, random() 
+0

Viel einfacher als ich dachte, es wäre. Vielen Dank. –

Verwandte Themen