Bha*_*wan 8 sql amazon-redshift
我正在使用此查询来获取汇总结果:
select _bs, string_agg(_wbns, ',') from bag group by 1;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
运行查询时出错:函数 string_agg(字符变化,“未知”)不存在提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
我也试过 array_agg() 并得到同样的错误。
请帮助我找出可用于汇总结果的其他选项。
Zay*_*hin 10
你必须使用listaggreshift
对于查询中的每个组,LISTAGG 聚合函数根据 ORDER BY 表达式对该组的行进行排序,然后将值连接成单个字符串。
LISTAGG 是一个仅限计算节点的函数。如果查询未引用用户定义的表或 Amazon Redshift 系统表,该函数将返回错误。
您的查询将如下所示
select _bs,
listagg(_wbns,',')
within group (order by _wbns) as val
from bag
group by _bs
order by _bs;
Run Code Online (Sandbox Code Playgroud)
为了更好地理解Listagg
要返回数组类型而不是 varchar,您需要将LISTAGG函数与SPLIT_TO_ARRAY函数组合起来,如下所示:
SELECT
some_grouping_key,
SPLIT_TO_ARRAY(LISTAGG(col_to_agg, ','), ',')
FROM some_table
GROUP BY 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11763 次 |
| 最近记录: |