だから私はこのような5つの行を持っています
userid, col
--------------
1, a
1, b
2, c
2, d
3, e
このようになるようにクエリを実行するにはどうすればよいですか?
userid, combined
1, a b
2, c d
3, e
ハイブで使用できます
SELECT userid, collect_set(combined) FROM tabel GROUP BY user_id;
collect_setは重複を削除します。それらを保持する必要がある場合は、この投稿を確認できます:
GROUP_CONCAT集計関数を使用します。
SELECT yt.userid,
GROUP_CONCAT(yt.col SEPARATOR ' ') AS combined
FROM YOUR_TABLE yt
GROUP BY yt.userid
デフォルトの区切り文字はコンマ( "、")であるため、目的の出力を取得するには、単一のスペースの区切り文字を指定する必要があります。
GROUP_CONCATの値の順序を確認する場合は、次を使用します。
SELECT yt.userid,
GROUP_CONCAT(yt.col ORDER BY yt.col SEPARATOR ' ') AS combined
FROM YOUR_TABLE yt
GROUP BY yt.userid
SELECT
userid,
concat_ws(" ", collect_set(col)) AS combined
FROM table
GROUP BY userid
MySQL
重複あり:select col1, group_concat(col2) from table1 group by col1
MySQL
重複なし:select col1, group_concat(distinct col2) from table1 group by col1
Hive
重複あり:select col1, collect_list(col2) from table1 group by col1
Hive
重複なし:select col1, collect_set(col2) from table1 group by col1