Selecione uma linha aleatória para cada grupo
Eu tenho uma mesa assim
ID ATTRIBUTE
1 A
1 A
1 B
1 C
2 B
2 C
2 C
3 A
3 B
3 C
Eu gostaria de selecionarapenas um atributo aleatório para cada ID. O resultado, portanto, poderia ser assim (embora essa seja apenas uma das muitas opções
ATTRIBUTE
B
C
C
Esta é minha tentativa neste problema
SELECT
"ATTRIBUTE"
FROM
(
SELECT
"ID",
"ATTRIBUTE",
row_number() OVER (PARTITION BY "ID" ORDER BY random()) rownum
FROM
table
) shuffled
WHERE
rownum = 1
no entanto, não sei se essa é uma boa solução, já que preciso introduzir números de linhas, o que é um pouco incômodo.
Você tem um melhor?