Составим с помощью операторов 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.