在用户和策略之间提供了很多表,如下所示:
policy_id| user_id
---------|---------
1 | 1
3 | 1
6 | 1
2 | 2
4 | 3
6 | 4
5 | 5
7 | 5
6 | 7
6 | 8 我正在寻找一个列表的所有唯一组合的策略,是活跃的/正在使用的用户。
我正在寻找的结果是:
现行政策组合: 1,3,6,2,4,6,5,7
这在一个查询中是可能的吗?我提供的唯一解决方案是扫描整个表,并将每个组合加载到一个集中,筛选出重复的集合。
编辑:
对意图和目的负责。
我正致力于将生成的一组策略的实时处理分离出来,我们向用户显示并缓存这些信息,这样我们就不会不断地重新计算了。对于给定时间内的一组策略,用户接收确定数量的消息。
例如,如果您有策略1,2,3 -我们计算并确定您要接收消息2,5。目前,我们正在计算/处理每一个客户端查询。我希望确定所有可能的策略组合,以便能够预先执行映射。
发布于 2020-03-17 16:27:45
您可以聚合两次:
select policies, count(*) as num_users
from (select user_id, array_agg(distinct policy_id order by policy_id) as policies
from t
group by user_id
) u
group by policies;https://stackoverflow.com/questions/60726390
复制相似问题