如何获得下面指定的结果?
我尝试使用
LISTAGG
函数,但它不能消除重复项。
有没有办法消除数据库本身的重复项,而不是将值提取到服务中然后进行重复数据删除?
数据集:
col0 col1
1 7
1 8
1 8
1 2
1 9
2 9
3 10
3 11
3 12
想要的结果:
col0 col1
1 2,7,8,9
2 9
3 10,11,12
尝试的 SQL(未消除重复项):
SELECT
col0,
SUM(col2 + col3) AS mycount
LISTAGG(col1, ',') within GROUP (ORDER BY col1)
FROM mytable
WHERE
_time >= TIMESTAMP '2024-12-03 00:00:00' AND
_time < TIMESTAMP '2024-12-03 01:00:00'
GROUP BY col0
ORDER BY mycount DESC
LIMIT 10
;
您需要在
DISTINCT
内使用
LISTAGG
SELECT col0,
LISTAGG(DISTINCT col1, ',') WITHIN GROUP (ORDER BY col1) AS col1
FROM test
GROUP BY col0;
输出