在 Clickhouse 上使用类似 group_concat 的东西

using something like group_concat on clickhouse

我正在尝试获取

的结果
types name
fruit banana, apple, guaba, strawberry

来自 table 数据库,如

table: 水果

types name
fruit banana
fruit apple
fruit guaba
fruit strawberry

我知道 MySQL 我可以使用 group_concat 通过使用

得到我想要的结果
SELECT group_concat(name), types FROM fruits

我做了研究,人们建议我在 clickhouse 中使用 groupArray 以获得类似的结果,但这不是我想要的。因为当我使用

SELECT groupArray(name), types FROM fruits GROUP BY types

它给了我

的结果
types name
fruit apple, banana, banana, strawberry,strawberry,strawberry, guaba,guaba,guaba,guaba

groupArray 的顺序混乱,我似乎找不到解决顺序的答案:(

在 clickhouse 中有什么方法可以让我们按顺序获得结果数组?为什么会有重复的结果?

我不能使用 groupUniqArray,因为有时我的结果应该是

banana, apple, guaba, strawberry, strawberry(如果草莓在 DB 中有两次)

如何保留重复的数据而不按顺序相乘???

types name input_time key
fruit banana 01:01 01
fruit apple 01:02 01
fruit guaba 01:03 02
fruit strawberry 01:04 03
fruit strawberry 01:05 04

忘记了 'types',我想在数据库保存顺序(input_time 顺序)中按键获取分组名称的结果。我应该如何更改我的查询?

我试过了

SELECT groupArray(name), key FROM fruits GROUP BY key ORDER BY input_time

但它没有给我想要的结果..

在子查询中使用 order by。数组中的顺序与查询管道前一阶段行的顺序相同

select types, arrayCompact(groupArray(name))  names, length(names) len from(
   select types, name from fruit order by types, input_time)
group by types


┌─types─┬─names───────────────────────────────────┬─len─┐
│ fruit │ ['banana','apple','guaba','strawberry'] │   4 │
└───────┴─────────────────────────────────────────┴─────┘

https://clickhouse.com/docs/en/sql-reference/functions/array-functions/#arraycompact 从数组中删除连续的重复元素。结果值的顺序由源数组中的顺序决定。