así que tengo 5 filas como estecombinar varias filas en una plaza de cadena separada
userid, col
--------------
1, a
1, b
2, c
2, d
3, e
¿Cómo puedo hacer la consulta por lo que se verá así
userid, combined
1, a b
2, c d
3, e
así que tengo 5 filas como estecombinar varias filas en una plaza de cadena separada
userid, col
--------------
1, a
1, b
2, c
2, d
3, e
¿Cómo puedo hacer la consulta por lo que se verá así
userid, combined
1, a b
2, c d
3, e
Uso del GROUP_CONCAT aggregate function:
SELECT yt.userid,
GROUP_CONCAT(yt.col SEPARATOR ' ') AS combined
FROM YOUR_TABLE yt
GROUP BY yt.userid
El separador predeterminado es una coma (","), por lo que debe especificar el SEPARADOR de un solo espacio para obtener la salida que deseas.
Si desea garantizar el orden de los valores en la GROUP_CONCAT, utilice:
SELECT yt.userid,
GROUP_CONCAT(yt.col ORDER BY yt.col SEPARATOR ' ') AS combined
FROM YOUR_TABLE yt
GROUP BY yt.userid
soy Actualmente estoy usando Hive, así que no puedo hacer el grupo por partes porque GROUP_CONCAT no se reconoce como una función de agregación, de todos modos alrededor de él. – haoxu
@haoxu: La siguiente opción (desde una perspectiva SQL) sería una concatenación de cursor y cadena, pero requeriría una función MySQL. No estoy familiarizado con Hive, ¿no hay forma de utilizar una consulta nativa? –
Presentó una solicitud JIRA para GROUP_CONCAT en HiveQL: https://issues.apache.org/jira/browse/HIVE-1689 –
Estoy bastante seguro de que no se puede hacer esto utilizando la colmena QL. Sin embargo, debería ser posible hacerlo si escribe sus propias secuencias de comandos Mapa/Reducir; consulte this tutorial para comenzar.
la respuesta está desactualizada. Las versiones más nuevas tienen las características. –
En colmena puede utilizar
SELECT userid, collect_set(combined) FROM tabel GROUP BY user_id;
collect_set quita duplicado. Si necesita mantenerlas se puede comprobar este post:
exactamente lo que quería! funciona como un encanto para concatenar una fila de un grupo por consulta –
SELECT
userid,
concat_ws(" ", collect_set(col)) AS combined
FROM table
GROUP BY userid
duplicado casi exacta de: http://stackoverflow.com/questions/2885709/sql-concatenate-rows-query –