我有一个包含几何线(路)的表。有些线具有唯一的几何形状(不重复),有些线具有相同的几何形状(2、3、4 等)。我只想列出独特的。例如,如果有两条具有相同几何形状的线,我想删除它们。我尝试了 DISTINCT,但它也显示了重复行的第一个结果。我只想看到那些独特的。我尝试了窗口函数,但得到了类似的结果(我在第一行从重复的计数器中得到了一个计数器)。很抱歉提出了一个新手问题,但我正在学习:) 谢谢!
例子:
way|
1 |
1 |
2 |
3 |
3 |
4 |
Run Code Online (Sandbox Code Playgroud)
结果应该是:
way|
2 |
4 |
Run Code Online (Sandbox Code Playgroud)
这确实有效。多谢。我还在该表中以各种方式添加了其他标签(名称、引用和其他一些标签),当我将它们添加到查询中时,我松开了隔离。
select count(way), way, name
from planet_osm_line
group by way, name
having count(way) = 1;
Run Code Online (Sandbox Code Playgroud)
如果查询中没有“名称”,我会列出所有唯一值,但我想为每一行保留“名称”。通过这个例子,我仍然会得到列出的表中的所有行。
我在创建表连接时遇到了麻烦.查询永远运行.我在一张桌子上打开了街道地图自行车路线,其中包含所有属性.
Table planet_osm_line
osm_id bigint,
route text,
name text,
network text,
osmc_color text,
reversed text,
state text,
"instance:cycle" text,
"relation:id" text,
ref text,
description text,
distance text,
tags hstore,
way geometry(LineString,900913)
Run Code Online (Sandbox Code Playgroud)
有些行是重复的(一条路上有2条或更多条路线)所以我将唯一的行过滤到另一个表中,我尝试将它们与planet_osm_line中的数据合并:
DROP TABLE IF EXISTS public.bicycle_merge;
CREATE TABLE public.bicycle_merge AS
WITH singleRow as (
select count(way), way
from planet_osm_line
WHERE route IN ('bicycle')
group by way
having count(way) = 1
)
SELECT P.*
FROM planet_osm_line P
JOIN singleRow S
ON P.way = S.way
;
Run Code Online (Sandbox Code Playgroud)
这个查询永远运行....请原谅我的新手问题,但我做错了什么?
"Nested Loop (cost=28767.43..172920474.87 rows=5892712 …Run Code Online (Sandbox Code Playgroud)