web-dev-qa-db-fra.com

Équivalent Presto de MySQL group_concat

Je suis nouveau sur Presto et cherche à obtenir les mêmes fonctionnalités que la fonction group_concat dans MySQL. Les deux suivants sont-ils équivalents? Sinon, des suggestions pour recréer la fonctionnalité group_concat dans Presto?

MySQL:

select 
  a,
  group_concat(b separator ',')
from table
group by a

Presto:

select 
  a,
  array_join(array_agg(b), ',')
from table
group by a

(Trouvé cela comme une solution de contournement Presto suggérée ici lors de la recherche de la fonctionnalité group_concat.)

12
Mike Moyer

Essayez d'utiliser ceci à la place de group_concat dans Presto ::

select 
  a,
  array_join(array_agg(b), ',')
from table
group by a
15
Rahul Ahuja

De plus, si vous recherchez uniquement des valeurs uniques - un équivalent à group_concat(distinct ... separator ', ') - essayez ceci:

array_join(array_distinct(array_agg(...)), ', ')
7
Jacob Rose

Il n'y a aucune fonction à partir de cette réponse, bien que la fonctionnalité ait été demandée .

L'équivalent le plus proche est mentionné dans votre question.

WITH tmp AS (
SELECT 'hey' AS str1
UNION ALL
SELECT ' there'
)
SELECT array_join(array_agg(str1), ',', '') AS joined
FROM tmp
4
duber