在 Presto 中加入数组后计算唯一值

Count the unique values after array Join in Presto

我有如下 3 列

col1 col2 price
abc 12345 10
abc 12345 10
bcd 45689 15
abc 78945 20
bcd 54782 13
def 12345 10
def 12345 10

我希望得到如下结果。

col1 col2 count Amount
abc 12345,78945 2 30
bcd 45689,54782 2 28
def 12345 1 10

GROUP BYarray_agg with distinct and cardinality 来计算长度应该产生所需的结果:

WITH dataset (col1, col2) AS (
    VALUES ('abc', 12345),
        ('abc', 12345),
        ('bcd', 45689),
        ('abc', 78945),
        ('bcd', 54782),
        ('def', 12345),
        ('def', 12345)
) 

--query
select col1, 
    array_agg(distinct col2) col2, 
    cardinality(array_agg(distinct col2)) count
from dataset
group by col1
order by col1 -- for output ordering

输出:

col1 col2 count
abc [12345, 78945] 2
bcd [45689, 54782] 2
def [12345] 1

如果 col2 需要不同的格式 - 使用 array_join.