在 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 BY
到 array_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
.
我有如下 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 BY
到 array_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
.