このようなテーブルがあります
ID ATTRIBUTE
1 A
1 A
1 B
1 C
2 B
2 C
2 C
3 A
3 B
3 C
ID ごとにランダムな属性を1 つだけ選択したいと思います。したがって、結果は次のようになります (ただし、これは多くのオプションの 1 つにすぎません)。
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
ただし、行番号を導入する必要があるため、これが良い解決策かどうかはわかりません。これは少し面倒です。
もっと良いものはありますか?