尝试用另一列中的唯一值计数填充列时出现语法错误



我试图计算表中每个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;

最新更新