Выберите случайную строку для каждой группы

У меня есть такой стол

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

хотел бы выбратьтолько один случайный атрибут для каждого идентификатора. Поэтому результат может выглядеть следующим образом (хотя это только один из многих вариантов

ATTRIBUTE
B
C
C

Это моя попытка решить эту проблему

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

однако я неЯ не знаю, является ли это хорошим решением, так как мне нужно ввести номера строк, что немного громоздко.

У тебя есть лучший?

Ответы на вопрос(2)

Ваш ответ на вопрос