gpt4 book ai didi

sql - Vertica 中连接字符串的聚合函数

转载 作者:行者123 更新时间:2023-12-02 12:50:00 25 4
gpt4 key购买 nike

在vertica中有一个表:像这样测试:

ID     |   name
1 | AA
2 | AB
2 | AC
3 | AD
3 | AE
3 | AF

如何使用聚合函数或如何编写查询来获取这样的数据(vertica 语法)?

ID    |  ag
1 | AA
2 | AB, AC
3 | AD, AE, AF

最佳答案

首先,您需要编译 agg_concatenate 的 udx。

-- Shell commands
cd /opt/vertica/sdk/examples/AggregateFunctions/
g++ -D HAVE_LONG_INT_64 -I /opt/vertica/sdk/include -Wall -shared -Wno-unused-value -fPIC -o Concatenate.so Concatenate.cpp /opt/vertica/sdk/include/Vertica.cpp

-- vsql commands
CREATE LIBRARY AggregateFunctionsConcatenate AS '/opt/vertica/sdk/examples/AggregateFunctions/Concatenate.so';
CREATE AGGREGATE FUNCTION agg_concatenate AS LANGUAGE 'C++' NAME 'ConcatenateFactory' LIBRARY AggregateFunctionsConcatenate;

然后你可以执行如下查询:

select id, rtrim(agg_concatenate(name || ', '),', ') ag
from mytable
group by 1
order by 1

使用 rtrim 去掉最后一个 ', '。

如果您需要以某种方式对聚合进行排序,您可能需要在内联 View 中或首先进行选择/排序。

关于sql - Vertica 中连接字符串的聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39668057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com