如何解决Postgres plpgsql聚合函数过滤每组长度
关于plpgsql聚合函数的帮助,不知道能不能实现。预先感谢您的帮助
Table
_id group_id content num len
0 2 tab 1 3
1 2 name 2 4
2 1 tag 1 3
3 1 bag 2 3
4 1 a 3 1
5 2 b 3 1
6 1 bo 4 2
7 2 an 4 2
我想实现一个聚合函数,根据group_id进行聚合,对num进行排序处理,然后在函数中判断len小于等于2则跳过,然后返回指定的数据每次聚合后的长度。
example:
with sorted_table as(select * from Table order by num)
select my_func(content,len,2(required_num)) from sorted_table group by group_id;
expect result
_id group_id content num len
0 2 tab 1 3
1 2 name 2 4
2 1 tag 1 3
3 1 bag 2 3
比如需要对每组的前10名(required_num)进行排序,按照每组的num进行排序,依次比较前10名的内容。如果相似度太高(我可以使用select相似度判断),过滤掉,以此类推达到每组10个Claim。也可能是这个
group_id result
2 [{"num":1,"content":"tab","len":3,"_id":0},{"num":2,"content":"name","len":4,"_id":1}]
1 [{"num":1,"content":"tag","_id":2},"content":"bag","_id":3}]
解决方法
据我了解这个问题,您实际上并不需要自定义聚合:
select group_id,jsonb_agg(t) filter (where len <= 2) as result
from the_table t
group by group_id;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。