Seleccionar fila aleatoria para cada grupo

Tengo una mesa como esta

ID    ATTRIBUTE
 1    A
 1    A
 1    B
 1    C
 2    B
 2    C
 2    C
 3    A
 3    B
 3    C

Me gustaria seleccionarsolo uno Atributo aleatorio para cada ID. Por lo tanto, el resultado podría verse así (aunque esta es solo una de las muchas opciones).

ATTRIBUTE
B
C
C

Este es mi intento en este problema

SELECT
  "ATTRIBUTE"
FROM
  (
  SELECT
    "ID",
    "ATTRIBUTE",
    row_number() OVER (PARTITION BY "ID" ORDER BY random()) rownum
  FROM
    table
  ) shuffled
WHERE
  rownum = 1

sin embargo, no sé si esta es una buena solución, ya que necesito introducir números de fila, lo cual es un poco engorroso.

¿Tienes una mejor?

Respuestas a la pregunta(2)

Su respuesta a la pregunta