我试图计算表中每个permission#的唯一池运算符的数量,但在将该值放入专用于该计数的新列时遇到了问题。
所以我有两个表:doh_analysis;doh_pools。
这两个表都有一个"permission"列(TEXT),但doh_analysis有大约1000行,permission列中有重复项,但运算符列中偶尔会有唯一值(TEXT。
我试图在表"doh_pools"中的列"operator_count"中为每个许可证#填充"poolcooper"中的唯一值计数。
所以我尝试了以下代码,但在"("附近出现语法错误:
update doh_pools
set operator_count = select count(distinct doh_analysis.pooloperator)
from doh_analysis
where doh_analysis.permit ilike doh_pools.permit;
当我从"count"之前删除"select"时,我得到"SQL错误[42803]:错误:UPDATE中不允许使用聚合函数"。
我可以使用成功查询不同许可池操作员对的列表
select distinct permit, pooloperator
from doh_analysis;
我可以使用一次查询每个许可证1的唯一池操作员数量
select count(distinct pooloperator)
from doh_analysis
where permit ilike '52-60-03054';
但我很难在operatorcount列中为每个permission#插入一个唯一对的计数。
有办法做到这一点吗?
当然有更好的方法可以做到这一点,但我通过创建2个中间表并用第二个中间表中的值更新目标表来实现我的目标,如下所示:
select distinct permit, pooloperator
into doh_pairs
from doh_analysis;
select permit, count(distinct pooloperator)
into doh_temp
from doh_pairs
group by permit;
select count(distinct permit)
from doh_temp;
update doh_pools
set operator_count = doh_temp.count
from doh_temp
where doh_pools.permit ilike doh_temp.permit
and doh_pools.permit is not NULL
returning count;