Vertica:将字符串拆分为数组并将其分组以获取一组唯一值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vertica:将字符串拆分为数组并将其分组以获取一组唯一值?相关的知识,希望对你有一定的参考价值。

我在Vertica上有一个专栏,它将数字存储为逗号连接的一串值,例如:12,15,17,例如:

ID  |  values
----------------------
A   | 1,3,5
A   | 2,3,5,6
B   | 1,2,3

我想把这作为我的最终结果:

ID  |  values
----------------------
A   | 1,2,3,5,6
B   | 1,2,3  

意思是,每个ID都包含所有不同的值。我该怎么做呢? (使用Vertica 8.1.1)

答案

找到它:假设你知道每个条目的最大值是多少(在这个例子中我们假设为6):

with m as (
  select 1 as i union all
  select 2 as i union all
  select 3 as i union all
  select 4 as i union all
  select 5 as i union all
  select 6 as i),
splitted_data as (
  select distinct ID, split_part('values',',',i) as value
  from main_table cross join m)
select ID, rtrim(agg_concatenate(value||','),',') as values
from splitted_data

以上是关于Vertica:将字符串拆分为数组并将其分组以获取一组唯一值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby 中拆分分隔字符串并将其转换为数组?

将数据拆分为列并将其存储为二维数组

将数据拆分为列并将其存储为二维数组

在javascript中拆分字符串以获取数据[重复]

拆分、分组和均值:使用数组计算

将字符串拆分为标记并将标记分成两个单独的数组