我想使用聚合函数更新paneldata设置列的表ibase.
UPDATE paneldata p
SET ibase=SUM(1/i.dist)
FROM ibaselang i
WHERE p.gid=i.gid
AND i.instp<p.period
Run Code Online (Sandbox Code Playgroud)
这导致了 ERROR: aggregate functions are not allowed in UPDATE
CREATE TABLE public.ibaselang
(
gid integer,
dist double precision,
buildid integer,
instp smallint
)
WITH (
OIDS=FALSE
);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道如何WHERE在子查询中实现我的函数.
在安装了PostGis 2.2.0的Postgres 9.5数据库中,我有两个带有几何数据(点)的表,我想将一个表中的点分配给另一个表中的点,但我不想要分配两次.一旦分配了一个,就不应该将其分配给另一个.buildings.gidbuildings.gidpvanlagen.buildid
buildings:
CREATE TABLE public.buildings (
gid numeric NOT NULL DEFAULT nextval('buildings_gid_seq'::regclass),
osm_id character varying(11),
name character varying(48),
type character varying(16),
geom geometry(MultiPolygon,4326),
centroid geometry(Point,4326),
gembez character varying(50),
gemname character varying(50),
krsbez character varying(50),
krsname character varying(50),
pv boolean,
gr numeric,
capac numeric,
instdate date,
pvid numeric,
dist numeric,
CONSTRAINT buildings_pkey PRIMARY KEY (gid)
);
CREATE INDEX build_centroid_gix
ON public.buildings
USING gist
(st_transform(centroid, 31467));
CREATE INDEX buildings_geom_idx
ON public.buildings
USING …Run Code Online (Sandbox Code Playgroud)