【问题标题】:Aggregate per Group returns Duplicates每个组的汇总返回重复项
【发布时间】:2019-06-12 14:36:45
【问题描述】:

我有以下场景,用户属于多个组。这些组按层次结构组织:

我想汇总用户所属组的所有人员信息。例如。第 1 个人属于第 7 组。第 7 组与以下第 1、5、7、8 组有联系(完整分支)

我写了以下查询:

SELECT person.id, array_agg(info)
FROM person LEFT JOIN person_group 
ON ARRAY[person.id] && path
LEFT JOIN person_information ON
ARRAY[person_information.id] && path
GROUP BY person.id;

这个查询的问题是我得到了重复的信息:

我不想在 array_agg(info) 字段上使用 UNIQUE。相反,我想编写我的联接,以便我只获得个人信息表的唯一行。

我该怎么做?谢谢

【问题讨论】:

标签: sql postgresql grouping


【解决方案1】:

我用这个查询解决了它:

SELECT person.id,  array_agg(info) FROM person 
LEFT JOIN person_information ON
person_information.id IN (
  SELECT DISTINCT(UNNEST(path)) 
  FROM person_group
  WHERE ARRAY[person.group_id] && path
) GROUP BY person.id;

你有更好的方法吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多