Итак, у меня есть 5 строк, как это
userid, col
--------------
1, a
1, b
2, c
2, d
3, e
Как бы я сделал запрос, чтобы он выглядел так
userid, combined
1, a b
2, c d
3, e
Итак, у меня есть 5 строк, как это
userid, col
--------------
1, a
1, b
2, c
2, d
3, e
Как бы я сделал запрос, чтобы он выглядел так
userid, combined
1, a b
2, c d
3, e
Используйте агрегатную функцию 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, collect_set(combined) FROM tabel GROUP BY user_id;
collect_set удаляет дубликаты. Если вам нужно сохранить их, вы можете проверить этот пост:
COLLECT_SET() в Hive, сохранить дубликаты?
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