Неправильный вывод при написании SQL-запроса с использованием функций Postgis

0

Я делаю домашнее задание, и я готов к этому. Проблема в том, что последний запрос, который я прав, должен только возвращать 10 строк, но то, что я имею сейчас, возвращает 16 строк, и я не могу понять, что я сделал неправильно. Определение запроса

Find all urban areas that (1) have a combined land & water area of greater than 1500 square 
kilo- meters and (2) intersect multiple states. Your query should return the urban area name 
(name10) and a count of the number of states intersected. The results should be first ordered by 
the number of states intersected (in descending order) and secondarily by alphabetical order of 
the urban area names from (A to Z). (Note: Pay very close attention to the units used for the 
areas in this question.) (10 records) 

SQL-запрос, который я написал, который возвращает 16 записей,

SELECT area1.name10, COUNT(*) AS Count 
FROM tl_2010_us_uac10 AS area1, tl_2010_us_state10 AS area2 
WHERE ((area1.aland10 + area1.awater10)/1000) > 1500 
AND ST_Intersects(area1.coords, area2.coords) 
GROUP BY area1.name10 HAVING COUNT(*) > 2 
ORDER BY Count DESC, area1.name10 ASC;

Две таблицы, которые я использую, - это

Table "public.tl_2010_us_state10"
    Column   |            Type             |                            Modifiers                             
 ------------+-----------------------------+-------------------------------------
  gid        | integer                     | not null default 
  region10   | character varying(2)        | 
  division10 | character varying(2)        | 
  statefp10  | character varying(2)        | 
  statens10  | character varying(8)        | 
  geoid10    | character varying(2)        | 
  stusps10   | character varying(2)        | 
  name10     | character varying(100)      |
  lsad10     | character varying(2)        | 
  mtfcc10    | character varying(5)        | 
  funcstat10 | character varying(1)        | 
  aland10    | double precision            | 
  awater10   | double precision            | 
  intptlat10 | character varying(11)       | 
  intptlon10 | character varying(12)       | 
  coords     | geometry(MultiPolygon,4326) | 

 Indexes:
 "tl_2010_us_state10_pkey" PRIMARY KEY, btree (gid)
 "tl_2010_us_state10_coords_gist" gist (coords)

Тогда это таблица городской информации.

                                      Table "public.tl_2010_us_uac10"
    Column   |            Type             |                           Modifiers                         
 ------------+-----------------------------+-------------------------------------
 gid        | integer                     | not null default 
 uace10     | character varying(5)        | 
 geoid10    | character varying(5)        | 
 name10     | character varying(100)      |
 namelsad10 | character varying(100)      | 
 lsad10     | character varying(2)        | 
 mtfcc10    | character varying(5)        | 
 uatyp10    | character varying(1)        | 
 funcstat10 | character varying(1)        | 
 aland10    | double precision            | 
 awater10   | double precision            | 
 intptlat10 | character varying(11)       | 
 intptlon10 | character varying(12)       | 
 coords     | geometry(MultiPolygon,4326) | 

 Indexes:
"tl_2010_us_uac10_pkey" PRIMARY KEY, btree (gid)
"tl_2010_us_uac10_coords_gist" gist (coords)

заранее спасибо

Теги:
subquery
postgis
psql

1 ответ

1

Площадь дана в квадратных метрах. Чтобы преобразовать квадратные метры в квадратные километры, разделите их на 1 000 000 - не 1000.

1 км = 1000 м. 1 км 2 = (1000 м) ** 2 = 1,000,000 (м 2)

  • 0
    Да, он говорит, что обратите очень пристальное внимание на единицы в вопросе: D.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню