我有一张有结构的大table
CREATE TABLE t (
id SERIAL primary key ,
a_list int[] not null,
b_list int[] not null,
c_list int[] not null,
d_list int[] not null,
type int not null
)
字符串
我想查询type
的a_list
,b_list
,c_list
,d_list
的所有唯一值,如下所示
select
some_array_unique_agg_function(a_list),
some_array_unique_agg_function(b_list),
some_array_unique_agg_function(c_list),
some_array_unique_agg_function(d_list),
count(1)
where type = 30
型
例如,对于这些数据,
+----+---------+--------+--------+---------+------+
| id | a_list | b_list | c_list | d_list | type |
+----+---------+--------+--------+---------+------+
| 1 | {1,3,4} | {2,4} | {1,1} | {2,4,5} | 30 |
| 1 | {1,2,4} | {2,4} | {4,1} | {2,4,5} | 30 |
| 1 | {1,3,5} | {2} | {} | {2,4,5} | 30 |
+----+---------+--------+--------+---------+------+
型
我要下一个结果
+-------------+--------+--------+-----------+-------+
| a_list | b_list | c_list | d_list | count |
+-------------+--------+--------+-----------+-------+
| {1,2,3,4,5} | {2,4} | {1,4} | {2,4,5} | 3 |
+-------------+--------+--------+-----------+-------+
型
有some_array_unique_agg_function
供我使用吗?
2条答案
按热度按时间7z5jn7bk1#
试试这个
字符串
测试结果:
型
toiithl62#
试试这篇文章中的旧答案:All Permutations of an Array
这列出了INT数组的唯一有序排列,按某个东西(在我的例子中是 row_id 和 instrument_id)分组,对于长度<= 10的数组,时间相当不错:
您可能需要安装intarray扩展.
字符串