我正在尝试计算表中每个许可#的唯一池运算符的数量,但是很难将此值放入专用于该计数的新列中。
所以我有2个表:doh_analysis; doh_pools。
这两个表都有一个“ permit”列(TEXT),但是doh_analysis有大约1000行,permit列中有重复项,而运算符列(TEXT)中偶尔有唯一值。
我正在尝试在表“ doh_pools”中的“ operator_count”列中填充每个许可证#的“ pooloperator”中的唯一值计数。
所以我尝试了以下代码,但是在“(”或附近出现语法错误:
update doh_pools
set operator_count = select count(distinct doh_analysis.pooloperator)
from doh_analysis
where doh_analysis.permit ilike doh_pools.permit;
当我从“计数”之前删除“选择”时,出现“ 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列中的每个permit#插入一个唯一对计数。
有没有办法做到这一点?
答案 0 :(得分:0)
当然有更好的方法,但是我通过创建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;