小编Voy*_*eck的帖子

SQL 仅列出唯一/不同值

我有一个包含几何线(路)的表。有些线具有唯一的几何形状(不重复),有些线具有相同的几何形状(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)

如果查询中没有“名称”,我会列出所有唯一值,但我想为每一行保留“名称”。通过这个例子,我仍然会得到列出的表中的所有行。

sql postgresql postgis

2
推荐指数
1
解决办法
4487
查看次数

PostgreSQL - OSM数据上非常慢的表连接

我在创建表连接时遇到了麻烦.查询永远运行.我在一张桌子上打开了街道地图自行车路线,其中包含所有属性.

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)

postgresql postgis openstreetmap

2
推荐指数
1
解决办法
122
查看次数

标签 统计

postgis ×2

postgresql ×2

openstreetmap ×1

sql ×1