Wählen Sie zufällige Zeile für jede Gruppe
Ich habe eine Tabelle wie diese
ID ATTRIBUTE
1 A
1 A
1 B
1 C
2 B
2 C
2 C
3 A
3 B
3 C
Ich würde gerne wählen Sie nur eine zufälliges Attribut für jede ID. Das Ergebnis könnte daher wie folgt Aussehen (dies ist zwar nur eine von vielen Optionen
ATTRIBUTE
B
C
C
Dies ist mein Versuch, auf dieses problem
SELECT
"ATTRIBUTE"
FROM
(
SELECT
"ID",
"ATTRIBUTE",
row_number() OVER (PARTITION BY "ID" ORDER BY random()) rownum
FROM
table
) shuffled
WHERE
rownum = 1
aber ich weiß nicht, ob das eine gute Lösung, da muss ich Zeile zahlen, das ist ein bisschen umständlich.
Haben Sie einen besseren?
InformationsquelleAutor speendo | 2013-04-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur das Attribut, Spalte:
Beachten Sie, dass Sie noch brauchen, um durch
id
ersten, wie es ist, eine Spalte mit demdistinct on
.Wenn Sie nur wollen, die verschiedene Attribute:
Die
distinct on (id)
macht es wieder eine einzige Zeile pro idwow, sehr ordentlich!
gelacht wie hier 😀
Keine syntax, wie dies in mysql gibt es? 🙂
InformationsquelleAutor Clodoaldo Neto
Eine große Zufallszahl, die vor jedem Datensatz (id) und wählen Sie in jeder Gruppe den Datensatz mit der niedrigsten Zufallszahl.
InformationsquelleAutor Turdus