14

だから私はこのような5つの行を持っています

userid, col
--------------
1, a
1, b
2, c
2, d
3, e

このようになるようにクエリを実行するにはどうすればよいですか?

userid, combined
1, a b
2, c d
3, e
4

4 に答える 4

44

ハイブで使用できます

SELECT userid, collect_set(combined) FROM tabel GROUP BY user_id;

collect_setは重複を削除します。それらを保持する必要がある場合は、この投稿を確認できます:

HiveのCOLLECT_SET()、重複を保持しますか?

于 2012-02-29T19:59:21.757 に答える
14

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
于 2010-09-13T19:37:12.900 に答える
2
SELECT 
  userid,
  concat_ws(" ", collect_set(col)) AS combined
FROM table 
GROUP BY userid
于 2017-01-22T06:16:26.710 に答える
2
  1. MySQL重複あり:select col1, group_concat(col2) from table1 group by col1
  2. MySQL重複なし:select col1, group_concat(distinct col2) from table1 group by col1
  3. Hive重複あり:select col1, collect_list(col2) from table1 group by col1
  4. Hive重複なし:select col1, collect_set(col2) from table1 group by col1
于 2019-01-03T06:25:05.653 に答える