- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的问题:我有一个带有索引的多边形图层,如下所示:
身份证,人口
100, 26
200, 12
300, 45
...
我编辑了多边形图层并将一些多边形分成更小的多边形(大约 3-7 个子多边形)。我已经负责在子区域之间拆分我的数据(根据人口密度)。所以现在我有这个:
身份证,人口
100, 22
100, 1
100, 3
200, 6
200, 6
我想创建一个反射(reflect)旧索引的新索引。例如:
oldId、newId、人口
100, 100, 22
100, 101, 1
100, 102, 3
200, 200, 6
200, 201, 6
我尝试过的事情:定义一个序列:
如果存在则删除序列 increment_id;
CREATE TEMP SEQUENCE increment_id INCREMENT BY 1 MINVALUE 0;
选择
ID,
id+nextval('increment_id') AS new_id
FROM polygon_mapping WHERE id = 100;
对于要重命名的单个 ID(WHERE 子句),这很有效,但我不知道如何为每个 ID 重新启动序列。
我考虑过使用“滞后”函数来比较当前 ID 和之前的 ID。但我无法让它发挥作用。
有什么建议吗?谢谢
ps:我经历过 Reset auto increment counter in postgres他们在那里重置了 SEQUENCE,但我没能让它在 SELECT 子句中工作。
最佳答案
也许使用 generate_series() ?
SELECT id, generate_series(id,id + count(*)) AS newid
FROM polygon_mapping GROUP BY id;
如果要选择其他属性,请使用子查询并使用 array_agg 对属性进行分组, 而不是在主查询中从数组中选择值:
SELECT id,
generate - 1 + id AS newid,
population_array[generate]
FROM (
SELECT id,
generate_series(1,count(*)) AS generate,
array_agg(population) AS population_array
FROM polygon_mapping GROUP BY id
) AS foo ORDER BY newid,id;
关于postgresql postgis : defining a new subzone index consistent with the old one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40053286/
我是一名优秀的程序员,十分优秀!