我有一个像这样的表格
ID ATTRIBUTE
1 A
1 A
1 B
1 C
2 B
2 C
2 C
3 A
3 B
3 C
我希望为每个ID选择 仅一个 随机属性。因此,结果可能如下所示(尽管这只是众多选项中的一个)。
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
但是,我不确定这是否是一个好的解决方案,因为我需要引入行号,这有点麻烦。
您有更好的建议吗?
distinct on (id)
使其每个 id 只返回一行。 - Clodoaldo Neto