Выбор объектов с помощью SQL-Запроса
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Составим с помощью операторов SQL-Запрос, который выберет штаты с наибольшей плотностью населения:

1. Выполните команду Файл > ОТКРЫТЬ ТАБЛИЦУ и откроите таблицу States в окне Карты.

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

 

Будет создана новая таблица, HIDENSTY, содержащая только тс штаты, в которых достаточно высокая плотность населения (количество населения, деленное на общую площадь). Звездочка (*) в окошке Select Columns box переводит все колонки из таблицы STATES в таблицу HIDENSTY.

3. Выполните команду Файл > СОХРАНИТЬ КОПИЮ и сохраните таблицу Selection. Таблица может быть сохранена под любым именем.

 

Команда SQL-запрос

Выборка - это подмножество данных, сгруппированных но значениям одной или нескольких переменных. Выборки создаются путем постановки вопросов (посылки запросов) о данных. Сколько клиентов прожинает в Ногинском районе? В каком районе самый высокий уровень преступлений? MapInfo хранит ответы на такие вопросы во временных таблицах, называемых таблицами запросов.

Рассмотрим более мощную команду - SQL-ЗАПРОС.

Команда ВЬБРАТЬ позволяет формулировать достаточно сложные запросы, а команда SQL-запрос еще мощнее. Записи в таблице запросов, созданной командой Выбрать не содержат никакой дополнительной информации по сравнению с исходной таблицей. Это, по существу, те же записи Они просто собраны вместе.

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

Диалог "SQL-запрос" – один из наиболее сложных в MapInfo. Не пугайтесь. Разобравшись в значениях каждого окошка, Вы без особого труда сможете формулировать сложные запросы. Вы можете напрямую вводить выражения в текстовые окошки или формировать их, выбирая элементы из окошек списков.

Проще всего разобрать работу с этим диалогом на подробном примере. В этом примере будет использована таблица WORLD из комплекта поставки MapInfo, так что Вы сможете сами проверить работу SQL-запроса. Мы коротко описали каждый шаг. Подробный разбор каждого окошка будет дан после примера.

 

Сохранение запросов

Любой запрос, созданный в диалогах "Выбрать" и SQL-Запрос" может быть сохранен как таблица запроса MapInfo. Таблицы запросов включают два файла: .TAB и .QRY. После того, как Вы выполнили команды в диалогах "Выбрать" и "SQL-запрос", выполните команду ФАЙЛ >Сохранить Запрос и, таким образом, запрос сохранится в виде таблицы. Когда Вы открываете эту таблицу, автоматически открываются таблицы, на основе которых выполняется запрос и далее этот запрос выполняется.

Внимание: Запросы, сделанные на основе других запросов, не могут быть сохранены в виде таблицы или Рабочего набора.

 

Сохранение запросов в Рабочем наборе

 

Вы также можете сохранять запросы в Рабочих наборах. Когда открывается Рабочий набор, содержащий запрос, то запрос автоматически будет выполняться, и откроются вес окна, созданные при этом запросе. В отличие от сохранения запроса в виде таблицы, отдельный .TAB файл при сохранении запроса в Рабочем наборе создан не будет.

Внимание: Для сохранения запросов в Рабочих наборах необходимо установить флажок "Сохранять Запросы в Рабочем Наборе" в диалоге "Стартовые режимы" (НАСТРОЙКИ > РЕЖИМЫ > СТАРТОВЫЕ...). По умолчанию флажок установлен.

 

Шаблоны запросов

 

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

 

Сохранение шаблонов

 

После завершения составления запроса или SQL-Запроса, нажмите кнопку Сохранить, чтобы сохранить запрос в виде шаблона или файла запроса. Откроется диалог "Сохранить запрос в файле". Задайте имя файлу запроса, укажите каталог и нажмите кнопку Сохранить. Файлы запросов сохраняются с расширением .QRY и размещаются в каталоге, определенном в Настройках (НАСТРОЙКИ > Режимы > Каталоги).

Внимание: Запросы, сохраняемые в шаблонах, могут быть не полными или синтаксически некорректными.

 

Загрузка шаблона

 

Можно загрузить любой шаблон запроса. Для загрузки нажмите кнопку Загрузить. Появится диалог "Загрузить запрос из файла". В списке появятся файлы с расширением .QRY. Выберите .QRY файл, который Вам нужен, и нажмите кнопку Открыть. Появится диалог "Запрос" или "SQL-Запрос", с окошками, заполненными в соответствии с сохраненными запросами. Далее просто выполните запрос.

 

Вычисляемые колонки

 

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

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

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

В выражениях для вычисляемых колонок можно использовать функции обобщения count, sum, avg, wtavg, max и min. Например:

sum (Население) – даст численность населения всего мира.

sum(Area(obj), "sq km") – выдаст суммарную площадь всех стран мира.

 

Псевдонимы названий колонок

 

При создании вычисляемой колонки MapInfo использует выражение в качестве названия колонки. Оно может быть неудобочитаемым. Вы можете падать псевдоним - свое название колонки.

Например, колонка плотности населения в окне Списка из предыдущего примера будет иметь название:

Население / Area(obj, "sq km")

Мы можем дать этой колонке более содержательное название. Чтобы переименовать колонку, добавьте свое название в окошко "Выбрать колонки" при перечислении используемых колонок. Это название должно следовать сразу после вычисляемого выражения, отделяться от него пробелом и быть заключено в двойные кавычки. Например:

Страна, Население/ Area(obj, "sq km") "ПЛ _ НАСЕЛЕНИЯ "

При создании временной таблицы запроса MapInfo назовет колонку плотности населения ПЛ_НАСЕЛЕНИЯ .

Псевдонимы можно задавать не только для вычисляемых колонок. Например, если каждая страна рассматривается уж отдельный регион сбыта, можно переименовать колонку Страна в ТЕРРИТОРИЯ . Это делается аналогично вычисляемым колонкам:

Страна "ТЕРРИТОРИЯ", Население / Area(obj, "sq km") "ПЛ _ НАСЕЛЕНИЯ".

 

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

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

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

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

Как суммировать (обобщать) данные.

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

 

ТОРГ_ПРЕД МЕСЯЦ ПРОДАЖИ
Иванов Май 1200
Петросян Май 900
Гольдштейн Май 1100
Иванов Июнь 900
Петросян Июнь 1400
Гольдштейн Июнь 600
Иванов Июль 1200
Петросян Июль 700
Гольдштейн Июль 1000

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

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

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

 

ТОРГ_ПРЕД sum(ПРОДАЖИ)
Иванов 3300
Петросян 3000
Гольдштейн 2700

 

или вычислить среднемесячный объем продаж каждого агента:

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

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

 

ТОРГ_ПРЕД avg(ПРОДАЖИ)
Иванов 1100
Петросян 1000
Гольдштейн 900


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

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

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

 

ТОРГ_ПРЕД sum(ПРОДАЖИ)
Май 3200
Июнь 2900
Июль 2900

 

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

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

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

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

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

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

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

 


Дата: 2019-12-10, просмотров: 315.