Vertica:将字符串拆分为数组并分组以获得一组唯一值?
Vertica: split string to array and group over to get set of unique values?
我在 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 上有一列,它将数字存储为由逗号连接的值字符串,例如: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