You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL窗口函数中如何让string_agg返回it_org_6的唯一值

解决方案

在PostgreSQL中,只需在针对it_org_6的string_agg函数内添加DISTINCT关键字,就能在保留原有窗口分区规则、不使用GROUP BY且最小改动原查询的前提下,实现仅聚合该列的唯一值。

修改后的查询关键部分如下:

select
    *,
    string_agg(it_service, ',') over (
        partition by numeric_encoding,
        host_id,
        patch_version
    ) as binary_it_services,
    string_agg(distinct it_org_6, ',') over (
        partition by numeric_encoding,
        host_id,
        patch_version
    ) as shared_gbgfs
from
    joined_tables

说明

  • 该方案仅改动了shared_gbgfs对应的string_agg调用,添加DISTINCT后,窗口函数会自动在当前分区内对it_org_6的取值去重,再进行字符串聚合。
  • 此方法要求PostgreSQL版本为10及以上,因为PostgreSQL 10才开始支持在窗口聚合函数中使用DISTINCT。若使用更低版本,可通过子查询先在分区内标记唯一值再聚合,但会增加查询复杂度,优先推荐升级版本或使用上述简洁方案。

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:47:10