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

Schreibe einen Kommentar