Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rukovodstvo_polzovatelya_MapInfo_Professional.pdf
Скачиваний:
718
Добавлен:
05.03.2016
Размер:
11.58 Mб
Скачать

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

9.Нажмите OK.

MapInfo создаст таблицу запроса с именем "МирПлотность", которая будет содержать значение средней плотности населения всего мира.

Обобщение данных

Под обобщением данных мы понимаем выполнение определенной математической операции над значениями всех записей из указанной колонки таблицы. В отличие от команды ВЫБРАТЬ, которая позволяет выполнять математические операции над отдельными записями, язык SQL дает возможность обобщать данные из всех записей в заданной колонке.

MapInfo для каждой группы значений в заданной колонке (колонках) создает отдельную строку. При обобщении данных надо указать:

как группировать записи;

как обобщать данные.

Например, имеется таблица торговых агентов и объемов продаж за три месяца:

:

ТОРГ_ПРЕД

МЕСЯЦ

ПРОДАЖИ

 

 

 

Иванов

Май

1200

 

 

 

Петросян

Май

900

 

 

 

Гольдштейн

Май

1100

 

 

 

Иванов

Июнь

900

 

 

 

Петросян

Июнь

1400

 

 

 

Гольдштейн

Июнь

600

 

 

 

Иванов

Июль

1200

 

 

 

Петросян

Июль

700

 

 

 

Гольдштейн

Июль

1000

 

 

 

MapInfo может вычислить общий объем продаж, сделанных каждым из агентов, если в диалоге "SQL-запрос" указать:

В поле Выбрать колонки: ТОРГ_ПРЕД, Sum(ПРОДАЖИ)

В поле Сгруппировать по колонке: ТОРГ_ПРЕД

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

261

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное) Глава 8: Выборки по запросам

ТОРГ_ПРЕД

sum(ПРОДАЖИ)

 

 

Иванов

3300

 

 

Петросян

3000

 

 

Гольдштейн

2700

 

 

Теперь подсчитаем общий объем продаж за каждый месяц:

В поле Выбрать колонки: SALES_REP, avg(SALES)

В поле Сгруппировать по колонке: SALES_REP

ТОРГ_ПРЕД

avg(ПРОДАЖИ)

 

 

Иванов

1100

 

 

Петросян

1000

 

 

Гольдштейн

900

 

 

MapInfo может рассчитать суммарные продажи по месяцам:

В поле Выбрать колонки: МЕСЯЦ, Sum(ПРОДАЖИ)

В поле Сгруппировать по колонке: МЕСЯЦ

МЕСЯЦ

sum(ПРОДАЖИ)

 

 

Май

3200

 

 

Июнь

2900

 

 

Июль

2900

 

 

ВMapInfo имеется шесть функций обобщения:

Count(*): подсчитывает число записей в группе. В качестве ее аргумента указывается *, так как она применима ко всем записям, а не к какому-то отдельному полю записи.

Sum (выражение): вычисляет сумму значений в <выражении> для всех записей группы.

Avg (выражение): вычисляет среднее значение в <выражении> для всех записей группы.

WtAvg (выражение): вычисляет взвешенное среднее значение <выражения> для всех записей группы.

Max (выражение): находит наибольшее значение в <выражении> среди всех записей группы.

Min (выражение): находит наименьшее значение в <выражении> среди всех записей группы.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

262

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

Группирование и упорядочивание данных

Результаты SQL-запроса можно сгруппировать по значениям из определенной колонки так, что записи, содержащие одинаковые значения в этой колонке, будут объединены вместе. Такую колонку можно определить в поле Сгруппировать по колонке диалога "SQL-запрос". При использовании также функций обобщения строки с одинаковыми значениями в группировочных колонках считаются одной группой. Повторяющиеся записи при этом не учитываются, а обобщенные значения выдаются в вычисляемых колонках. Задайте названия коло-нок или их номера в поле Выбрать колонки. При использовании вычисляемых колонок следует указывать именно их номера.

Кроме того, можно указать MapInfo порядок сортировки результатов запроса. Стандартный порядок – по возрастанию (для строковых полей – по алфавиту). Как и в окошке Сгруппировать по колонке, здесь можно указывать название колонки или ее условный номер. Для вычисляемых колонок следует указывать номер. При этом не надо указывать “COL" перед номером колонки.

Объединение таблиц командой SQL-запрос

При выполнении SQL-запросов к нескольким таблицам MapInfo должна объединить данные из разных таблиц. Допустим, имеется таблица, содержащая только графические объекты и их названия, и таблица статистических данных для некоторого региона. Надо показать эти статистические данные на карте. С помощью команды SQL-ЗАПРОС можно объединить статистические и географические данные в одну таблицу.

При работе с несколькими таблицами Вы должны так заполнить окошко С условием, чтобы при выполнении запроса правильно сопоставлялись записи из разных таблиц.

Рассмотрим таблицу WORLD и таблицу экономической статистики ECO_STATS по всем странам мира. Надо создать временную таблицу запроса, которая объединила бы оба набора данных:

В поле Выбрать колонки: * (напомним, что звездочка означает, что в таблицу запроса надо включить все колонки исходных таблиц).

В поле Из таблиц: WORLD, ECO_STATS.

В поле С условием: WORLD.Страна = ECO_STATS.

Две колонки, с помощью которых Вы сопоставляете записи из разных таблиц, необязательно должны иметь одинаковое название. В качестве примера рассмотрим таблицу иностранных клиентов INT_CUST, содержащую колонку регионов сбыта ("Территория"). В эту колонку записаны названия континентов. Чтобы временно объединить эту таблицу с таблицей стран мира, составьте запрос следующим образом:

В поле Выбрать колонки: *

В поле Из таблиц: WORLD, INT_CUST

В поле С условием: WORLD.Континент = INT_CUST.Территория

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

263

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

Пример. Общая численность населения и площадь по континентам

Зная теперь, как MapInfo обобщает данные, мы можем вычислить общую численность населения и общую площадь каждого континента. Мы хотим создать таблицу, содержащую следующую информацию:

перечень государств на континенте (в алфавитном порядке);

общая численность населения по континентам;

общая площадь каждого континента

Чтобы создать таблицу, содержащую всю эту информацию:

1.Откройте таблицу WORLD.TAB и увеличьте ее на все окно.

2.Выполните команду ЗАПРОС > SQL-ЗАПРОС. Появится диалог "SQL-запрос". Заполните его следующим образом:

3.В поле из таблиц выберите WORLD из выпадающего списка таблиц.

4.В поле Выбрать колонки выберите "Континент" из списка, и выберите Count(*) из списка Обобщение.

Один раз нажмите пробел и напечатайте псевдоним колонки "КОНТИНЕНТ". Помните, что псевдоним отделяется от выражения пробелом.

Внимание: Колонка "Континент" Count(*)" будет заменена в результирующей таблице на "Страны".

5.Выберите "Sum" из выпадающего списка Обобщение.

6.Выберите "Население" из списка Колонки. После выбора колонки "Население" курсор переместится к скобке [)]. Переместите его направо за скобку.

Внимание: Sum("Население") создаст результирующую колонку, в которой будут результаты расчета населения земного шара.

7.Нажмите один раз пробел и введите псевдоним колонки "ОбщНаселение". В результирующей таблице под именем "ОбщНаселение" появится колонка Sum("Население").

8.Выберите "Sum" из выпадающего списка Обобщить.

9.Выберите "Area" из выпадающего списка Функции.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

264

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

10.После того, как Вы выберите "Area", курсор будет располагаться перед последней скобкой [)]. Переместите его направо за скобку.

Sum(Area) создаст дополнительную колонку, которая будет содержать результат вычисления общей площади.

11.Один раз нажмите пробел и введите псевдоним колонки "ОбщПлошадь".

Внимание: В результирующей таблице появится колонка Sum(Area(obj, “sq mi”)) под именем "ОбщПлошадь".

12.В окошке Сгруппировать по колонке выберите "Континент" из списка Колонки.

13.В окошке Порядок задать по колонке выберите "Континент" из списка Колонки.

14.В окошке И поместить в таблицу введите "Население" в качестве имени для этой таблицы.

15.Функция Count(*) считает все записи в таблице. Таким образом, мы группируем все страны по континентам, MapInfo подсчитывает число стран на каждом контитенте и помещает результат в колонку, названную "Страны" (это псевдоним).

Будет получена таблица, показанная на рисунке.

Условие Where

Порядок полей, используемый при операции Объединения, не имеет значения. Возможен следующий синтаксис:

Select * from A,B where A.field1 = B.field1

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

265

MI_UG.PDF

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]