在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
首先,您需要为编译udx agg_concatenate
。
-- 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摆脱最后一个’,’。
如果您需要以某种方式对聚合进行排序,则可能需要在嵌入式视图中或使用first进行选择/排序。
问题内容: 我正在寻找一种将不同行中的字符串聚合为一行的方法。我希望在许多不同的地方进行此操作,因此具有促进此操作的功能会很好。我已经尝试过使用和解决方案,但它们只是不适合我。 字符串聚合将执行以下操作: 我看过CLR定义的聚合函数来代替和,但是显然 SQL Azure 不 支持CLR定义的东西,这让我很痛苦,因为我知道能够使用它可以解决很多问题。我的问题。 有什么可能的解决方法,或者类似的最优方
问题内容: 我找到了一种将不同行中的字符串聚合到sybase ASE 15中的单行中的方法。像这样: T-SQL中的FOR XML PATH之类的东西。 谢谢! 问题答案: Sybase ASE没有任何字符串聚合函数,例如或; 并且虽然有对的支持,但不包括对选件/功能的支持。 假设要追加的行数未知/可变,则唯一的(ASE 15)T-SQL选项将是基于游标的解决方案。 如果发现自己正在使用ASE 1
我正在开发一个程序,该程序将获取一个文本文件,并将数字从0-99转换为文字(即0)- 这里有几行输出(每一行都是不同的system.out行): 这是输入文件上的三行: 如您所见,数字随系统一起添加和打印。从函数convertToWord中退出,但一旦返回main,就会丢失。如何跨函数将这些转换附加到字符串?
问题内容: 我只是在学习MySQL-是否有组合(或嵌套)聚合函数的方法? 给定一个查询: 这将给我每个用户回答的问题数量。我真正想要的是每个用户回答的平均问题数量…… 计算此统计信息的正确方法是什么? 如果有可能,是否有办法针对每个问题分解此统计信息?(用户可以多次回答相同的问题)。就像是: 问题答案: 您必须使用子查询: 您不能将一个聚合与另一个聚合一起包装。如果MySQL支持分析/排序/窗口功
我需要将字符串和Int串联起来,如下所示: 但它没有编译,错误如下: 二进制运算符“”不能应用于“String”和“Int”类型的操作数 连接字符串Int的正确方法是什么?
问题内容: 有没有办法串联起来形成Java? 例: 问题答案: 用途: 单线: 这样做可以: 我前段时间问了有关问题。