Nyx*_*nyx 6 postgresql postgis postgresql-9.1
在下面的查询中,为什么我们必须使用WHERE foo.row_num < 3
子查询之外的子句foo
而不是子查询内的子句来限制从每个 Partition 返回的结果WHERE row_num < 3
?
询问
SELECT pid, land_type, row_num, road_name, round(CAST(dist_km AS numeric), 2) AS dist_km
FROM (
SELECT ROW_NUMBER()
OVER (
PARTITION by loc.pid
ORDER BY ST_Distance(r.the_geom, loc.the_geom)
) as row_num,
loc.pid, loc.land_type, r.road_name,
ST_Distance(r.the_geom, loc.the_geom)/1000 as dist_km
FROM ch05.land AS loc
LEFT JOIN ch05.road AS r
ON ST_DWithin(r.the_geom, loc.the_geom, 1000)
WHERE loc.land_type = 'police station'
) AS foo
WHERE foo.row_num < 3
ORDER BY pid, row_num;
Run Code Online (Sandbox Code Playgroud)
不工作的查询
SELECT pid, land_type, row_num, road_name, round(CAST(dist_km AS numeric), 2) AS dist_km
FROM (
SELECT ROW_NUMBER()
OVER (
PARTITION by loc.pid
ORDER BY ST_Distance(r.the_geom, loc.the_geom)
) as row_num,
loc.pid, loc.land_type, r.road_name,
ST_Distance(r.the_geom, loc.the_geom)/1000 as dist_km
FROM ch05.land AS loc
LEFT JOIN ch05.road AS r
ON ST_DWithin(r.the_geom, loc.the_geom, 1000)
WHERE loc.land_type = 'police station'
AND row_num < 3
) AS foo
ORDER BY pid, row_num;
Run Code Online (Sandbox Code Playgroud)
错误: ERROR: column "row_num" does not exist
归档时间: |
|
查看次数: |
13874 次 |
最近记录: |