• Примеры запросов с группировкой по колонкам
• Пример - использование окошка "сгруппировать по колонкам" в SQL-запросе
• Пример - использование окошка "порядок определить по колонке" в SQL-запросе
После завершения составления запроса или SQL-запроса результаты можно хранить в таблице запросов MapInfo Professional. Таблица запросов состоит из TAB-файла и связанного с ним QRY-файла. После выполнения любой из команд Выбрать или SQL-запрос, выполните команду Сохранить Запрос в меню Файл. Когда Вы в следующий раз обратитесь к этой таблице, откроются все таблицы, которые участвуют в запросе, а сам запрос будет повторно выполнен.
Внимание: Запросы, сделанные к запросам, не могут сохраняться как таблицы или в Рабочих Наборах.
Сохранение запросов в Рабочем Наборе
Вы также можете сохранять запросы в Рабочих Наборах. Когда открывается Рабочий Набор, содержащий запрос, то запрос автоматически будет выполняться, и откроются все окна, созданные при этом запросе. В отличие от сохранения запроса в виде таблицы, отдельный TAB- файл при сохранении запроса в Рабочем Наборе создан не будет.
Внимание: Для сохранения запросов в Рабочих Наборах необходимо установить флажок Сохранять запросы в Рабочем Наборе в диалоге Стартовые режимы (Настройки > Режимы > Стартовые). По умолчанию флажок установлен.
Включение режима сохранения запросов при использовании Рабочих наборов
Чтобы включить режим Сохранять запросы при использовании Рабочих наборов нужно установить флажок Сохранять запросы в Рабочем наборе диалога Стартовые режимы.
1. Выполните команду Настройки > Режимы > Стартовые. Появится диалог Стартовые режимы.
2. Установите флажок Сохранять запросы в Рабочем наборе (по умолчанию уже установлен).
3. Нажмите OK.
Если этот режим был включен, то при открытии Рабочего набора запросы, сохранённые в нем, будут восстановлены. Отдельный файл таблицы MapInfo Professional (.tab) для запросов создан не будет.
Внимание: Только запросы, созданные командами SQL-запрос или Выбрать сохраняются в Рабочем наборе.
Шаблоны запросов можно создавать, когда Вы сохраняете запрос или SQL-запрос в виде шаблона и перезагружаете его. При этом нет необходимости вводить параметры запроса каждый раз, когда Вы этот запрос используете. Диалоги Выбрать и SQL-запрос имеют кнопки Сохранить и Загрузить, позволяющие решить эту задачу. Шаблоны запросов удобны для восстановления запросов в случае обновления таблиц, использующихся в этих запросах, или для выполнения запросов к таблице, имеющей такие же поля, как и у таблицы, к которой изначально был сделан запрос.
Загрузка шаблона
Можно загружать любой сохраненный шаблон запроса.
Для загрузки шаблона:
1. В диалоге Выбрать или SQL-запрос нажмите кнопку Загрузить. Откроется диалог Загрузить запрос из файла, в котором предлагается выбрать файл с расширением QRY.
2. Выберите нужный файл и нажмите кнопку Открыть. Откроется диалог SQL-запрос или Выбрать, в котором будут введены параметры, используемые в этом шаблоне запроса. Выполните запрос для создания таблицы запроса.
Выбор с помощью запросов в MapInfo Professional Переименование шаблона
Выберите шаблон и введите его новое имя (не более 64 символов).
Составив запрос или SQL-запрос, нажмите кнопку Сохранить, чтобы сохранить запрос в виде шаблона.
Чтобы сохранить запрос в виде шаблона:
1. После завершения составления выборки или SQL-запроса нажмите кнопку Сохранить. Откроется диалог Сохранить запрос в файле.
2. Задайте имя файлу запроса, укажите каталог и нажмите кнопку Сохранить. Файлы запросов сохраняются с расширением QRY и размещаются в каталоге, определенном в Настройках (Настройки > Режимы > Каталоги).
Внимание: Для сохранения запроса в шаблоне не надо проверять синтаксис или логическую завершенность самого запроса.
Чтобы удалить шаблон:
• выберите шаблон по имени и нажмите клавишу DEL. Появится диалог отмены/подтверждения удаления выбранного шаблона. Если шаблонов данного типа не существует, то появится кнопка для восстановления шаблона по умолчанию.
Вычисляемая колонка - это такая колонка, которая содержит результат применения запроса. В приведенном выше примере Плотность является вычисляемой колонкой. По умолчанию поле Выбрать колонки содержит звездочку (*), что означает выбор всех колонок из базовой таблицы и их включение в таблицу запроса. Если для вычислений не требуются все колонки, удалите звездочку и введите имена нужных колонок. Можно создавать несколько вычисляемых колонок. Нет ограничений на количество вычисляемых колонок. Помните, что чем больше создается вычисляемых колонок, тем дольше обработка в MapInfo Professional.
Можно создавать вычисляемые колонки, используя функции обобщения count, sum, avg, wtavg, max и min. Например:
• sum(Population)
будет содержать в результате население всего земного шара.
• sum(Area(obj), "sq km") вычислит площадь всего земного шара.
При создании вычисляемой колонки MapInfo Professional использует определенное выражение в качестве названия колонки. Оно может быть неудобочитаемым. Вы можете задать псевдоним - свое название колонки. Например, колонка плотности населения в окне Списка из предыдущего примера будет иметь название:
• Population / Area(obj, "sq km")
Мы можем дать этой колонке более содержательное название.
Чтобы переименовать колонку, добавьте свое название в поле Выбрать колонки. Это название должно следовать сразу после вычисляемого выражения, отделяться от него пробелом и быть заключено в двойные кавычки. Например:
• Country, Population / Area(obj, "sq km") "ПЛ_НАСЕЛЕНИЯ"
При создании временной таблицы запроса MapInfo Professional назовет колонку плотности населения "ПЛ_НАСЕЛЕНИЯ".
Псевдонимы можно задавать не только для вычисляемых колонок. Например, если каждая страна рассматривается как отдельный регион сбыта, можно переименовать колонку Country в ТЕРРИТОРИЯ. Этот процесс аналогичен процессу создания вычисляемой колонки:
• Country "ТЕРРИТОРИЯ", Population / Area(obj, "sq km") "ПЛ_НАСЕЛЕНИЯ"
Ещё один пример — плотность насления во всем мире в Справке.
Под обобщением данных мы понимаем выполнение определенной математической операции со значениями всех записей из указанной колонки таблицы. В отличие от команды Выбрать, которая позволяет выполнять математические операции с отдельными записями, язык SQL дает возможность обобщать данные из всех записей в заданной колонке.
MapInfo Professional найдет все уникальные наборы данных в заданной колонке или нескольких колонках и создаст единственную запись для каждого уникального набора. При обобщении данных надо указать:
• как группировать записи;
• как обобщать данные.
Например, пусть имеется таблица торговых агентов и сумм продаж за три месяца:
ТОРГ_ПРЕД | МЕСЯЦ | ПРОДАЖИ |
Иван | Май | 1200 |
Катя | Май | 900 |
Петр | Май | 1100 |
Иван | Июнь | 900 |
ТОРГ_ПРЕД | МЕСЯЦ | ПРОДАЖИ |
Катя | Июнь | 1400 |
Петр | Июнь | 600 |
Иван | Июль | 1200 |
Катя | Июль | 700 |
Петр | Июль | 1000 |
MapInfo Professional может вычислить общий объем продаж, сделанных каждым из агентов, если в диалоге SQL-запрос указать:
• в поле Выбрать колонки: ТОРГ_ПРЕД, sum(ПРОДАЖИ);
• в поле Сгруппировать по колонке: ТОРГ_ПРЕД
ТОРГ_ПРЕД | sum(ПРОДАЖИ) |
Иван | 3300 |
Катя | 3000 |
Петр | 2700 |
Теперь подсчитаем общий объем продаж за каждый месяц:
• в поле Выбрать колонки: ТОРГ_ПРЕД, ауд(ПРОДАЖИ);
• в поле Сгруппировать по колонке: ТОРГ_ПРЕД
ТОРГ_ПРЕД | avg(SALES) |
Иван | 1100 |
Катя | 1000 |
Петр | 900 |
MapInfo Professional может рассчитать суммарные продажи по месяцам:
• в поле Выбрать колонки: МЕСЯЦ, sum(ПРОДАЖИ);
• в поле Сгруппировать по колонке: МЕСЯЦ
МЕСЯЦ | sum(ПРОДАЖИ) |
Май | 3200 |
Июнь | 2900 |
Июль | 2900 |
В MapInfo Professional имеется шесть функций обобщения:
• Count(*): подсчитывает число записей в группе. В качестве ее аргумента указывается *, так как она применима ко всем записям, а не к какому-то отдельному полю записи.
• Sum (выражение): вычисляет сумму значений в <выражении> для всех записей группы.
• Avg (выражение): вычисляет среднее значение в <выражении> для всех записей группы.
• WtAvg (выражение): вычисляет взвешенное среднее значение <выражения> для всех записей группы.
• Max (выражение): находит наибольшее значение в <выражении> среди всех записей группы.
• Min (выражение): находит наименьшее значение в <выражении> среди всех записей группы.
Дополнительную информацию о группировании и сортировке читайте в Справочной системе.
Объединение таблиц командой SQL-запрос
При выполнении SQL-запросов к нескольким таблицам MapInfo Professional должна объединить данные из разных таблиц. Допустим, имеются таблица, содержащая только графические объекты и их названия, и таблица статистических данных для некоторого региона. Надо показать эти статистические данные на карте. С помощью команды SQL-запрос можно объединить статистические и географические данные в одну таблицу.