【发布时间】:2018-07-31 12:57:01
【问题描述】:
我有一张这样的桌子:
我想对不同的列集(其中至少有一个来自 X 的元素和一个来自 Y 的元素的所有子集)执行计数。我怎样才能在 Postgres 中做到这一点?
例如,我可能有 {x1,x2,y3}、{x4,y1,y2,y3} 等。我想计算每组中具有 1 的“id”的数量。所以对于第一组:
SELECT COUNT(id) FROM table WHERE x1=1 AND x2=1 AND x3=1;
第二组也是这样:
SELECT COUNT(id) FROM table WHERE x4=1 AND y1=1 AND y2=1 AND y3=1;
是否可以编写一个遍历所有这些集合并相应地查询表的循环?数组会超过10000个集合,所以不能手动完成。
【问题讨论】:
-
“遍历所有这些集合”是什么意思?你说你需要包含 x1-y4 的集合的所有排列吗?
-
正确!对于 X 和 Y 的所有可能组合(当然顺序并不重要)。实际表有超过 8 列。所以排列的数量甚至更高。如果有解决方案,我也可以在 Python 中执行此操作!
标签: sql arrays postgresql loops