postgresql 如何根据条件获得所有记录的计数和列表

x4shl7ld  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(169)

我在postgres 14中有下表:

user  team 
1      A
10     B
113    C
12     A
1      B
113    A
12     C
1      C
113    B

查询所有3个团队A, B, C中不同user的计数以及所有这些用户的列表的最佳方法是什么

输出应该:

count   list_user
2       [1, 113]

我尝试为3个团队中的每一个团队使用cte's,但是查询一直在运行,没有检索到任何结果,然后超时。

wsewodh2

wsewodh21#

我们可以在这里使用双重聚合方法:

SELECT COUNT(*) AS count,
       STRING_AGG(user::text, ',') AS list_user
FROM
(
    SELECT user
    FROM yourTable
    WHERE team IN ('A', 'B', 'C')
    GROUP BY user
    HAVING COUNT(DISTINCT team) = 3
) t;

相关问题